国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整

這篇具有很好參考價(jià)值的文章主要介紹了unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

首先展示效果

unity3d

關(guān)于人物移動(dòng),這里推薦使用Character Conrroller組件,優(yōu)點(diǎn)就是可以不用處理剛體,不受重力的影響,自帶物理碰撞檢測(cè)。

unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整

?人物移動(dòng)代碼包括轉(zhuǎn)向

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class player : MonoBehaviour
{
    CharacterController characterController;
    Animator animator;

    private float speed;
    public float walkspeed;
    public float runspeed;
    private bool isrun;

    public Transform cam;
    private Vector3 direction;
    public float turnSmoothTime = 0.1f;
    float turnSmoothVelocity;

    void Start()
    {
        characterController = GetComponent<CharacterController>();
        animator = GetComponent<Animator>();
    }   
    // Update is called once per frame
    void Update()
    {
        //獲取按鍵
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        if (horizontal!=0||vertical!=0)
        {
            
            animator.SetBool("Walk", true);
        }
        else
        {
            animator.SetBool("Walk", false);
        }
        if(Input.GetKey(KeyCode.LeftShift))
        {
            
            animator.SetBool("Run", true);
        }
        else
        {
            animator.SetBool("Run", false);
        }
        isrun=Input.GetKey(KeyCode.LeftShift);
        if(isrun)
        {
            speed = runspeed;
        }
        else
        {
            speed = walkspeed;
        }
        direction =new Vector3(horizontal,0f,vertical);
        if (direction.magnitude>=0.1f)
        {
            float targetangle=Mathf.Atan2(direction.x,direction.z)*Mathf.Rad2Deg+cam.eulerAngles.y;
            float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetangle, ref turnSmoothVelocity, turnSmoothTime);
            transform.rotation=Quaternion.Euler(0f,angle,0f);
            Vector3 moveDir = Quaternion.Euler(0f, targetangle, 0f) * Vector3.forward;
            characterController.Move(moveDir*speed* Time.deltaTime);
        }
        
    }
}
  

接下來(lái)就是攝影機(jī)的調(diào)整,這里使用unity自帶的插件cinemachine,非常的推薦,無(wú)需使用冗雜的代碼即可設(shè)計(jì)較好的攝像機(jī)跟隨視角。

安裝包:

工具欄:Window->Package Manager

unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整

安裝即可?

這里我們將使用FreeLook Camera,然后綁定角色:

unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整

比較重要的設(shè)置:

unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整

? ? ? ? ?TopRig MiddleRig BottomRig 這些是設(shè)置相機(jī)軌道也就基本定義了相機(jī),上圖數(shù)據(jù)構(gòu)成的試圖比較推薦大家試試,一定要記得改Binding Mode為 World Space。

大家可能會(huì)遇到游戲玩家的運(yùn)動(dòng)方向與按鍵方向相反的狀況,這里只需要將X Axis 中畫紅線部分取消勾選,上方Y(jié) Axis 勾選即可

unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整

?攝影機(jī)完成代碼(掛載到Main Camera上):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ThirdPersoncam : MonoBehaviour
{
    public Transform orientation;
    public Transform player;
    public Transform playerObj;

    public float rotationSpeed;
    // Start is called before the first frame update
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {
        Vector3 Dir = player.position - new Vector3(transform.position.x, player.position.y, transform.position.z);
        orientation.forward = Dir.normalized;
        //獲取按鍵
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 inputDir = orientation.forward * vertical + orientation.right * horizontal;
        if (inputDir != Vector3.zero)
        {
            playerObj.forward = Vector3.Slerp(playerObj.forward, inputDir.normalized, Time.deltaTime * rotationSpeed);
        }
    }
}

此處的playerobj以及orientation是掛載在游戲角色上的子空物體,用來(lái)輔助方向。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-505406.html

到了這里,關(guān)于unity3d 實(shí)現(xiàn)第三人稱移動(dòng)與攝像機(jī)調(diào)整的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity筆記:第三人稱Starter Asset代碼學(xué)習(xí)

    Unity筆記:第三人稱Starter Asset代碼學(xué)習(xí)

    自己看了幾篇文章和視頻,寫了個(gè)人物移動(dòng)腳本,有很多瑕疵。這個(gè)時(shí)候研究一下優(yōu)秀的代碼總是好的,Unity官方有Third Person Starter Asset可供研究,其官方商店頁(yè)面是:Starter Assets - ThirdPerson | Updates in new CharacterController package 官方B站介紹視頻是:Bilibili - [Unity教程]-Starter Asset

    2024年02月22日
    瀏覽(29)
  • Unity 第三人稱 玩家控制器+相機(jī)控制器

    Unity 第三人稱 玩家控制器+相機(jī)控制器

    今天給大家分享一個(gè)簡(jiǎn)單的Unity第三人稱視角下玩家控制器和相機(jī)控制器的腳本編寫方法。 ? 效果如下: 主要分三部分實(shí)現(xiàn):人物旋轉(zhuǎn)、人物移動(dòng)、相機(jī)旋轉(zhuǎn)。 1.人物移動(dòng): 首先獲取到人物水平和垂直移動(dòng)的參數(shù): 因?yàn)槿宋镆苿?dòng)的方向跟攝像頭一致,所以需要根據(jù)攝像頭的

    2024年02月06日
    瀏覽(96)
  • unity-第三人稱攝像機(jī)簡(jiǎn)單腳本(包括跟隨、視角旋轉(zhuǎn)、滾輪縮放)

    本菜鳥為了實(shí)現(xiàn)第三人稱視角攝像機(jī)的主要功能,踩了很多意料之外的坑,終于搞出一份自覺完美的腳本,分享一下。 功能:攝像機(jī)跟隨、鼠標(biāo)滾輪縮放視野、長(zhǎng)按鼠標(biāo)右鍵左右旋轉(zhuǎn)視野、長(zhǎng)按鼠標(biāo)中鍵上下旋轉(zhuǎn)視野。 此腳本掛接在攝像機(jī)上,有詳細(xì)注釋,可直接運(yùn)行。

    2024年02月08日
    瀏覽(310)
  • Unity3D學(xué)習(xí)記錄04——利用射線實(shí)現(xiàn)角色類似LOL的移動(dòng)

    Unity3D學(xué)習(xí)記錄04——利用射線實(shí)現(xiàn)角色類似LOL的移動(dòng)

    首先新建一個(gè)空白的GameObject,掛在一個(gè)MouseManager的腳本 實(shí)現(xiàn)思路: 通過(guò)獲取鼠標(biāo)點(diǎn)擊的位置,獲得該位置的信息,然后使角色移動(dòng)到該位置 MouseManager腳本的代碼如下: ? 代碼解釋: 先創(chuàng)建了一個(gè)Action類型的事件OnMouseClicked 這個(gè)是C#中事件的內(nèi)容,我們可以在滿足條件的時(shí)

    2024年02月08日
    瀏覽(24)
  • Unity3D實(shí)現(xiàn)第一人稱移動(dòng),隨鼠標(biāo)轉(zhuǎn)動(dòng)視角+上樓梯(C#)

    Unity3D實(shí)現(xiàn)第一人稱移動(dòng),隨鼠標(biāo)轉(zhuǎn)動(dòng)視角+上樓梯(C#)

    第一人稱移動(dòng): 1、在層級(jí)面板創(chuàng)建一個(gè)Capsule,命名為Player,將層級(jí)面板中的相機(jī)拖到Player下方 2、重置Player和攝像機(jī)的Transform數(shù)值(方便調(diào)整攝像機(jī)在Player上的位置),然后調(diào)整攝像機(jī)在Player上的位置 大概將攝像機(jī)放到Player眼睛的位置即可。 3、創(chuàng)建一個(gè)腳本,命名為Came

    2024年02月13日
    瀏覽(59)
  • unity3d---移動(dòng)、縮放、旋轉(zhuǎn)

    unity3d---移動(dòng)、縮放、旋轉(zhuǎn)

    目錄 1.示意圖 2.觸屏移動(dòng)與縮放+鍵盤移動(dòng)、旋轉(zhuǎn)與縮放+鼠標(biāo)移動(dòng)旋轉(zhuǎn)與縮放 1.示意圖 ? 2.觸屏移動(dòng)與縮放+鍵盤移動(dòng)、旋轉(zhuǎn)與縮放+鼠標(biāo)移動(dòng)旋轉(zhuǎn)與縮放

    2024年02月06日
    瀏覽(95)
  • UE4/5 實(shí)現(xiàn)多相機(jī)模式切換(第一人稱切第三人稱等)

    UE4/5 實(shí)現(xiàn)多相機(jī)模式切換(第一人稱切第三人稱等)

    對(duì)于多相機(jī)模式的切換,網(wǎng)上普遍使用SetViewTargetWithBlend這個(gè)節(jié)點(diǎn),但這個(gè)節(jié)點(diǎn)很多相機(jī)參數(shù)不能設(shè)置,也不適合運(yùn)用于游戲中多相機(jī)模式切換的場(chǎng)合。 UE中World Settings里的玩家控制器中,默認(rèn)的控制器行為會(huì)對(duì)當(dāng)前開啟的Camera組件進(jìn)行激活處理: 因此,默認(rèn)綁在Pawn上的相機(jī)

    2024年02月11日
    瀏覽(22)
  • Unity3D 控制物體移動(dòng)且自動(dòng)旋轉(zhuǎn)

    Unity3D 控制物體移動(dòng)且自動(dòng)旋轉(zhuǎn)

    直接上代碼(改腳本掛載到游戲物體上) 第三人稱攝像機(jī)移動(dòng)

    2024年02月15日
    瀏覽(97)
  • Unity3D方向鍵控制人物移動(dòng)的代碼

    也可以換成 Translate 函數(shù)默認(rèn)模式是 Space.Self ,此時(shí)移動(dòng)方向需要為人物坐標(biāo)系下的人物前進(jìn)方向 Vector3(0, 0, 1) ;如果模式指定為 Space.World ,移動(dòng)方向應(yīng)該為世界坐標(biāo)系下的人物前進(jìn)方向 transform.forward , transform.forward 在人物轉(zhuǎn)向過(guò)程中會(huì)改變。如果不注意這個(gè)問(wèn)題,人物轉(zhuǎn)

    2024年02月11日
    瀏覽(33)
  • Unity3D制作一個(gè)會(huì)移動(dòng)的方塊(還不會(huì)移動(dòng)照相機(jī))

    Unity3D制作一個(gè)會(huì)移動(dòng)的方塊(還不會(huì)移動(dòng)照相機(jī))

    學(xué)習(xí) Unity3D 這么久了,如果你還不會(huì)制作一個(gè)按下 WASD 就可以移動(dòng)的方塊的話,那么你的學(xué)習(xí)將沒有一點(diǎn)成就感,我學(xué)習(xí)的時(shí)候,我決定 先學(xué)習(xí)移動(dòng) ,這樣我就會(huì)對(duì) Unity 更加感興趣,學(xué)習(xí)起來(lái)的動(dòng)力會(huì)更為充足 先創(chuàng)建一個(gè)項(xiàng)目,名為move,如果你手頭有一個(gè)隨便亂用的項(xiàng)目

    2024年02月14日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包