1.添加刚体
设置 Drag 和Angilar Drag为Infinity
2.代码控制
1.获取组件
2.获取水平轴和垂直轴的值
3.移动函数
4.控制动画播放
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour {
public float speed = 5f; //速度
Vector3 movePosition; //位置
Rigidbody player; //角色
Animator anim; //动画
/// <summary>
/// 脚本实例被创建时被调用
/// </summary>
void Awake ()
{
//获取组件
player = GetComponent<Rigidbody>();
anim = GetComponent<Animator>();
}
/// <summary>
/// 每个固定物理时间间隔调用一次
/// </summary>
void FixedUpdate()
{
//获取水平轴和垂直轴的值
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Move(h, v);//移动
Animating(h, v);//移动动画
}
/// <summary>
/// 移动
/// </summary>
/// <param name="h"></param>
/// <param name="v"></param>
void Move(float h, float v)
{
//设置三维向量的值
movePosition.Set(h, 0f, v);//设置movement的位置
movePosition = movePosition.normalized * speed * Time.deltaTime;//移动位置 - 目标位置
player.MovePosition(transform.position + movePosition);//通过 MovePosition 方法让角色移动 transform.position:当前位置
}
/// <summary>
/// 移动动画
/// </summary>
/// <param name="h"></param>
/// <param name="v"></param>
void Animating(float h, float v)
{
bool walking = h != 0 || v != 0;//是否处于行走状态
anim.SetBool("IsWalking", walking);//设置 IsWalking 的值
}
}