在Unity3D中,角色的移动控制的有两种方式。
- Animator enable root motion
- Animator 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 frame
void 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);
}
}
}