首页 > 代码库 > Unity3d中的人物移动
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中的人物移动
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。