Unity3d中的人物移动

Posted vaevaevae

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d中的人物移动相关的知识,希望对你有一定的参考价值。

对于第三人称的游戏,主人公身上一般加一个character controller用来控制移动。这时候需要自己模拟重力,让主人公站在地板上。如果用A D控制左右, W S控制前后,那么控制移动代码可以这么写:

public class Move : MonoBehaviour {
    public CharacterController character;
    public float speed;
    // Use this for initialization
    void Start () {
        character = this.GetComponent<CharacterController>();
        speed=1f;
    }
    
    // Update is called once per frame
    void Update () {
        float horizontal = Input.GetAxis("Horizontal"); //A D 左右
        float vertical = Input.GetAxis("Vertical"); //W S 上 下
        float moveY = 0;
        float gravity = -9.8f;
        moveY = gravity*Time.deltaTime;
        character.Move(new Vector3(horizontal, moveY, vertical) * speed * Time.deltaTime);
    }
}

使用Input.GetAxis方法获取下列默认轴: "Horizontal" 和"Vertical" 映射于控制杆、A、W、S、D和箭头键(方向键)。horizontal和verical分别是两个介于[-1,1]之间的数。利用这段代码,人物只在xz平面上移动。

移动还可以用transform.Translate方法,或者使用Rigidbody并赋予刚体速度。但有一点要注意,如果移动命令是在Update()函数里面,物体移动时会有抖动情况,因为每一帧时间不固定,移动的距离有长有短。解决这个问题的方法是把移动语句写在FixedUpdate()函数里面,因为该函数每一帧的长度固定。

具体其他移动方法可以看http://www.jianshu.com/p/5653b0be5fd4

以上是关于Unity3d中的人物移动的主要内容,如果未能解决你的问题,请参考以下文章

怎么通过程序控制unity3d人物动作

时光煮雨 Unity3D实现2D人物移动-总结篇

unity3d 第三人称视角的人物移动以及相机控制

Unity3D:实现人物转向与移动

unity3d中如何编写脚本使人物按预先设定的路线平滑移动?

Unity3D编程学习 小知识_人物移动导航_2018Oct