实现动画播放在5.0是非常简单的,只需对状态机状态进行不同的设定:
void FixedUpdate () {
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Animating(h, v); //判断player是否在移动,并设置状态机状态
}
void Animating(float h, float v) {
bool walking = h!= 0f || v!= 0f; //判断当前角色是否在移动
anim.SetBool("IsWalking", walking);
}
上段代码中Animating()方法实现了对角色是否移动的判断,并设定了状态机。注意anim.SetBool("IsWalking",walking);中第一个参数一定要与状态机的名字相对应。
以下为完整的代码:
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour
{
public float speed = 6f;
Vector3 movement;
Rigidbody PlayerRididbody;
Animator anim;
void Awake() {
PlayerRididbody = GetComponent<Rigidbody>();
anim = GetComponent<Animator>();
}
void FixedUpdate () {
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Move(h, v); //使player可以移动
Animating(h, v); //判断player是否在移动,并设置状态机状态
}
void Move(float h, float v) {
movement.Set(h, 0f, v); // set movement ‘s value
movement = movement.normalized * speed * Time.deltaTime;
PlayerRididbody.MovePosition(transform.position + movement); //通过MovePosition()方法让主角移动
}
void Animating(float h, float v) {
bool walking = h!= 0f || v!= 0f; //判断当前角色是否在移动
anim.SetBool("IsWalking", walking);
}
}