目录
在 Unity 项目开发中,实现角色的前后左右移动并搭配相应动画是基础且关键的环节,以下是使用特定资源进行实现的详细过程。
资源准备
本次使用 “Base Man” 模型资源以及 “Kevin Iglesias” 动画资源。“Base Man” 作为角色主体,“Kevin Iglesias” 包含丰富的人物动画片段。
让角色可移动
添加刚体组件
选中场景中的角色预制体(从 “Base Man” 文件夹拖入场景),在 Inspector 视图中点击 “Add Component”,添加 “Rigidbody” 组件。该组件使角色能受物理规则影响,如重力、碰撞等,为后续移动控制提供基础。刚体组件的参数中,“Mass”(质量)影响物体惯性,“Drag”(阻力)模拟运动阻碍,“Use Gravity”(使用重力)决定是否受重力下落。
编写移动控制脚本
新建 C# 脚本 “MovementController”,代码如下:
using UnityEngine;
public class MovementController : MonoBehaviour
{
public float speed = 5f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontalInput, 0f, verticalInput);
rb.AddForce(movement * speed);
}
}
此脚本通过获取 WASD 键(或方向键)的输入值,给刚体添加力,实现角色的前后左右移动。将脚本挂载到角色预制体上。
添加移动动画
准备动画资源
确保 “Kevin Iglesias” 动画资源中有合适的移动动画,如行走、跑步等。该资源中不同文件夹(如 “Movement” 下的 “Run”“Sprint” 等)包含不同动作和方向的动画片段,部分文件名带有方向标识(如 “Forward”“Backward” 等) ,还有些文件在 “RootMotion” 文件夹中,带有 “[RM]” 标识。
设置动画状态机
选中角色预制体,确认已添加 Animator 组件。打开 Animator 窗口(快捷键 Ctrl + 6),将动画片段拖入窗口创建动画状态。例如,创建向前走、向后退、向左移、向右移等状态,并使用过渡箭头连接,设置过渡条件,如根据按键输入触发状态切换。
关联动画与移动控制
修改 “MovementController” 脚本,添加动画控制部分:
using UnityEngine;
public class MovementController : MonoBehaviour
{
public float speed = 5f;
private Rigidbody rb;
private Animator animator;
void Start()
{
rb = GetComponent<Rigidbody>();
animator = GetComponent<Animator>();
}
void FixedUpdate()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontalInput, 0f, verticalInput);
rb.AddForce(movement * speed);
bool isMoving = horizontalInput != 0 || verticalInput != 0;
animator.SetBool("IsMoving", isMoving);
}
}
在 Animator 窗口中,将 “IsMoving” 参数与动画状态的过渡条件关联,实现角色移动时播放相应动画。
关于动画资源细节
动画文件类型
常见的 FBX 文件是包含动画数据的核心文件,记录角色骨骼的运动信息。对应的 META 文件是 Unity 用于记录资源导入设置和元数据的文件,一般无需手动编辑。
RootMotion 文件夹
该文件夹中的动画文件带有 “[RM]” 标识,包含角色整体移动信息。启用 Root Motion 功能时,角色会按预设轨迹移动;而普通目录下的动画文件侧重肢体动作,角色位移需通过脚本额外控制。
通过以上步骤,即可在 Unity 中实现基于特定资源的角色移动与动画效果,在实际开发中,还可根据项目需求进一步优化和拓展,如添加更复杂的动画过渡效果、优化物理交互等。