在Unity3D中,角色的移动控制的有两种方式。
Animator enable root motionAnimator disable root motion
如果勾选了 root motion 动画的root会自动跟随transform.position
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Driver : MonoBehaviour{Animator anim;float speed = 5f;float rotationSpeed = 100f;private void Awake(){anim = gameObject.GetComponent<Animator>();}// Update is called once per framevoid Update(){float translation = Input.GetAxis("Vertical") * speed * Time.deltaTime;float rotation = Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;// Option1-> Animator disable root motion// transform.Translate(0, 0, translation);// Option2-> Animator enable root motion// transform.Translate(0, 0, translation); 该行不需要transform.Rotate(0, rotation,0);if( translation != 0){anim.SetBool("isWaling", true);anim.SetFloat("walking", translation);}else{anim.SetFloat("walking", 0);anim.SetBool("isWaling", false);}if(Input.GetKeyDown(KeyCode.Space)){// anim.SetTrigger("isJumping");anim.SetBool("isJumping2", true);}}}