Unity 角色移动与动画实现过程记录

目录

Unity 角色移动与动画实现过程记录

资源准备

让角色可移动

添加刚体组件

编写移动控制脚本

添加移动动画

准备动画资源

设置动画状态机

关联动画与移动控制

关于动画资源细节

动画文件类型

RootMotion 文件夹


在 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 中实现基于特定资源的角色移动与动画效果,在实际开发中,还可根据项目需求进一步优化和拓展,如添加更复杂的动画过渡效果、优化物理交互等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值