关于移动的方式下面这个链接有很好的解释:https://blog.csdn.net/yangyong0717/article/details/72540052
自己试了下一下几种方式:
// Update is called once per frame
void FixedUpdate () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
//transform.Translate(new Vector3(h*Time.deltaTime*speed,0,v*Time.deltaTime*speed));
//m_rigidbody.velocity += new Vector3(h, 0, v);
//m_rigidbody.AddForce(new Vector3(h,0,v)*speed);
//m_rigidbody.MovePosition(new Vector3(-3.76f,0,1.58f));
}
关于通过CharacterController组件移动物体,它的优势这里就不多说了,百度下一大把:
//主角移动
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
if (character.isGrounded)
{
moveDirection = new Vector3(h, 0, v);
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetKeyDown(KeyCode.Space))
{
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
character.Move(moveDirection*Time.deltaTime);
character.isGrounded判断是否在地上才能够进行跳跃。