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

转载于:https://www.cnblogs.com/vaecn/p/7191027.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值