Unity学习笔记(二)如何制作角色动画

news2024/12/15 13:45:03

前言

本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记

创建一个角色

我们的目的是创建一个可移动、跳跃、冲刺等动作的角色

需要的组件:Rigidbody(用于创建物理规则)、Collider(用于检测碰撞)、Sprite Renderer(用于渲染角色,放在动画子对象)、Material(材质,2D 物理引擎中对象的物理交互属性的工具)

步骤一:先创建一个Player对象

在这里插入图片描述
创建Player属性如下
在这里插入图片描述

步骤二:修改初始图形象

现在我们来改变它的形象,需要修改Sprite Renderer使用我们自己的图标,这里需要先将原始图进行分割

图片初始,这肯定不能在游戏中使用,我们需要对它进行分割

在这里插入图片描述
可以通过编辑,也可以通过选择其他的按钮完成切割,这里我们选择编辑
在这里插入图片描述
由于这张图人物大小不一,所以我们要手动设置切割大小,这里也有自动模型(类型)

我这里选择了 X = 69, Y = 44
在这里插入图片描述
效果如下
在这里插入图片描述
然后我们再讲切割好的图片放到 Sprite Renderer 的精灵这里
在这里插入图片描述
如果切割出来的图片太小了,可以通过这里进行微调
在这里插入图片描述

这里角色不在中心,进行微调即可
在这里插入图片描述

拓展

Warrior_Sheet-Effect (Texture 2D)

Warrior_Sheet-Effect (Texture 2D) 通常指的是用于游戏开发中的 **角色动画纹理图集(**Sprite Sheet)

什么是 Warrior_Sheet-Effect?
  1. 定义
    1. 它是一张包含多个角色动作帧的二维纹理图片,用于动画实现。
    2. 例如,一个“战士”的行走、攻击、跳跃等动作会分成若干帧,排列在一张大图中。
  2. 用途
    1. 用于实现 2D 动画效果
    2. 在游戏中通过播放这些帧,实现角色的连续动作,如挥剑、奔跑、受伤等。
  3. 效果
    1. 提供流畅的战士角色动画,提升游戏画面的动态表现力。
在 Unity 中使用 Warrior_Sheet-Effect

步骤 1:导入纹理

  1. 将图集文件(如 Warrior_Sheet-Effect.png)拖入 Unity 的 Assets 文件夹。
  2. 选中纹理,在 Inspector 面板中设置:
    1. Texture Type:选择 Sprite (2D and UI)
    2. Sprite Mode:选择 Multiple(多帧模式)。
    3. Pixels Per Unit:根据游戏需求设置像素与单位的比例。

步骤 2:切割图集

  1. 在纹理设置中点击 Sprite Editor
  2. 打开切割工具,选择:
    1. Slice TypeGrid by Cell SizeGrid by Cell Count
    2. 根据图集帧的大小或数量进行切割。
  3. 确保每一帧的边界正确,然后点击 Apply

步骤 3:创建动画

  1. Hierarchy 面板中创建一个新的 GameObject 并附加 Sprite Renderer 组件。
  2. 打开切割后的图集,选择一组帧并拖入场景。
  3. Unity 会自动提示创建动画,保存为 .anim 文件。
  4. 在 Animator 面板中编辑动画的播放逻辑。
动画效果的优化
  1. 帧速率(Frame Rate)
    1. 在动画中调整帧速率,确保动作流畅但不过快(通常为 12~24 fps)。
  2. 循环动画
    1. 对于循环动作(如走路或奔跑),勾选 Loop
  3. 触发条件
    1. 结合 AnimatorC# 脚本,实现复杂的动画切换(如攻击时触发攻击动画)。
使用场景
  1. 战士角色动画
    1. 通过帧动画实现战士的攻击、行走、跳跃、受伤等动作。
  2. 特效动画
    1. 图集中可能包含技能特效(如剑光、爆炸效果),配合角色动画使用。
  3. 游戏 UI 或其他效果
    1. 适用于任何需要动态效果的 2D 场景。

制作角色动作的动画(Animator)

前期准备

将制作动画的窗口设置出来
在这里插入图片描述
在 Player 对象中创建子对象命名为 Animator,添加组件。

完成动画需要的组件:Sprite Renderer(渲染器)、Animator(动画)、C#脚本。

在这里插入图片描述
创建了 Animator 之后还需要创建 Animator Controller 来设置动画的状态

在这里插入图片描述

双击后,在动画器的窗口就可以看到当前的状态了
在这里插入图片描述

制作角色简单的动画

在这里插入图片描述
选择之前切割的图拉取到对应的片段中
在这里插入图片描述

效果如下
请添加图片描述

拓展

Animator?

Animator 是 Unity 中用于管理和控制动画的组件和系统,通过结合 动画片段(Animation Clips)状态机(State Machines)脚本触发器(Triggers),实现复杂的角色动作和动画效果。以下是 Animator 的详细介绍及使用方法:

1. 什么是 Animator?
  • Animator 组件
    • 挂载在游戏对象上,连接动画控制器(Animator Controller)。
    • 用于播放、控制和切换动画片段。
  • Animator Controller
    • 是一个图形化的动画状态机,定义了动画之间的切换逻辑。
2. Animator 的主要功能
  1. 播放动画
    1. 控制角色的行走、跑步、攻击等动作。
  2. 状态机管理
    1. 动画状态之间的转换由状态机(State Machine)完成,允许动画流畅过渡。
  3. 参数控制
    1. 通过 Animator 参数(如 boolfloatint)动态调整动画行为。
  4. 触发器(Trigger)
    1. 用于触发一次性动画,比如攻击动作。
  5. 混合树(Blend Tree**)**:
    1. 实现动作的平滑过渡(如行走到跑步的速度切换)。
3. 如何使用 Animator

步骤 1:添加 Animator 组件

  1. 选择一个游戏对象(如角色)。
  2. 在 Inspector 面板中,点击 Add Component,选择 Animator

步骤 2:创建 Animator Controller

  1. 右键点击 Assets > Create > Animator Controller
  2. 将创建的 Animator Controller 拖入对象的 Animator 组件的 Controller 槽位。

步骤 3:添加动画片段

  1. 双击打开 Animator Controller。
  2. 将动画片段(.anim 文件)拖入 Animator 面板。
  3. 设置初始状态:
    1. 右键点击一个动画片段,选择 Set as Layer Default State

步骤 4:设置动画切换

  1. 在 Animator 中点击一个状态(动画片段),右键选择 Make Transition
  2. 创建一个到目标状态的过渡。
  3. 设置过渡条件:
    1. 在 Animator 面板中,创建参数(如 isRunning)。
    2. 选中过渡箭头,设置条件(如 isRunning = true 时切换到跑步动画)。

步骤 5:通过脚本控制动画

使用代码动态控制 Animator 参数:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        // 设置动画参数
        float speed = Input.GetAxis("Vertical");
        animator.SetFloat("Speed", Mathf.Abs(speed));

        if (Input.GetButtonDown("Jump"))
        {
            animator.SetTrigger("Jump");
        }
    }
}
4. Animator 的核心概念

状态(State)

  • 表示一个动画片段或动作的状态,例如 Idle、Run、Jump。
  • 每个状态可以对应一个动画片段。

过渡(Transition)

  • 状态之间的切换。
  • 通过设置条件(Parameters)和过渡时间(Transition Duration)实现流畅的切换。

参数(Parameters)

  • 动画切换的触发条件。
  • 参数类型:
    • Float:如角色速度。
    • Bool:如是否攻击。
    • Int:如动作模式编号。
    • Trigger:一次性触发动作。

混合树(Blend Tree**)**

  • 在同一个状态中,根据参数值平滑混合多个动画。
  • 常见用法:
    • 根据速度混合行走和跑步动画。
    • 根据角色角度混合转身动画。
5. 常见用法场景
  1. 角色动画
    1. 管理角色的待机、行走、攻击、跳跃等动作。
  2. 敌人 AI 动画
    1. 根据敌人的状态(巡逻、追击、攻击)切换动画。
  3. 技能特效
    1. 技能启动和结束动画,通过 Trigger 控制一次性播放。
  4. UI 动画
    1. 在界面中实现按钮按下或弹窗动画。
6. 常见问题及解决方案
  1. 动画切换卡顿
    1. 检查过渡时间是否过长。
    2. 确保没有不必要的过渡条件冲突。
  2. 动画循环问题
    1. 在 Animation Clip 的 Inspector 面板中,取消 Loop Time 勾选。
  3. 参数未更新
    1. 确保在代码中正确调用 SetFloatSetBoolSetTrigger 等方法。
  4. 动画过渡条件无效
    1. 确保所有相关参数在 Animator 面板中已正确配置。
7. 高级功能
  1. 层级(Layers)
    1. 用于处理多种动画叠加,例如角色奔跑时还可以播放上半身射击动作。
  2. IK**(Inverse Kinematics,逆向动力学)**:
    1. 用于角色与环境的动态交互(如手部抓住物体)。
  3. 动画事件(Animation Events)
    1. 在动画帧中插入事件回调,触发脚本逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式入门Day30

IO Day5 线程相关函数pthread_createpthread_selfpthread_exitpthread_join\pthread_detachpthread_cancelpthread_setcancelstatepthread_setcanceltype 作业 线程 线程是轻量化的进程&#xff0c;一个进程内可以有多个线程&#xff0c;至少包含一个线程&#xff08;主线程&a…

【Ubuntu】双硬盘安装双系统 Windows 和 Ubuntu

【Ubuntu】双硬盘安装双系统 Windows 和 Ubuntu 1 安装顺序2 Ubutnu 20.042.1 准备工作2.2 自定义分区2.3 遇到的一些问题 1 安装顺序 我选择先在一块 SSD 上安装 Windows 再在另一块 SSD 上安装 Ubuntu&#xff0c;建议先安装 Windows 2 Ubutnu 20.04 2.1 准备工作 制作启…

【Qt】QWidget中的常见属性及其功能(一)

目录 一、 enabled 例子&#xff1a; 二、geometry 例子&#xff1a; window fram 例子 &#xff1a; 四、windowTiltle 五、windowIcon 例子&#xff1a; qrc机制 创建qrc文件 例子&#xff1a; qt中的很多内置类都是继承自QWidget的&#xff0c;因此熟悉QWidget的…

iOS swift开发系列 -- tabbar问题总结

1.单视图如何改为tabbar&#xff0c;以便显示2个标签页 右上角➕&#xff0c;输入tabbar 找到控件&#xff0c;然后选中&#xff0c;把entrypoint移动到tabbar控件 2.改成tabbar&#xff0c;生成两个item&#xff0c;配置各自视图后&#xff0c;启动发现报错 Thread 1: “-[p…

Muduo网络库解析--网络模块(2)

前文 重写Muduo库实现核心模块的Git仓库 注&#xff1a;本文将重点剖析 Muduo 网络库的核心框架&#xff0c;深入探讨作者精妙的代码设计思路&#xff0c;并针对核心代码部分进行重写&#xff0c;将原本依赖 boost 的实现替换为原生的 C11 语法。需要说明的是&#xff0c;本文…

电脑怎么设置通电自动开机(工控机)

操作系统&#xff1a;win10 第一步&#xff0c;电脑开机时按del键进入bios页面。 第二步&#xff0c;选择advanced下的IT8712 Super IO Configuration 第三步&#xff0c;找到Auto Power On&#xff0c;将其从Power off设置为Power On 第四步&#xff0c;F10保存&#xff0c;大…

如何对小型固定翼无人机进行最优的路径跟随控制?

控制架构 文章继续采用的是 ULTRA-Extra无人机&#xff0c;相关参数如下&#xff1a; 这里用于guidance law的无人机运动学模型为&#xff1a; { x ˙ p V a cos ⁡ γ cos ⁡ χ V w cos ⁡ γ w cos ⁡ χ w y ˙ p V a cos ⁡ γ sin ⁡ χ V w cos ⁡ γ w sin ⁡ χ…

基于Redis实现令牌桶算法

基于Redis实现令牌桶算法 令牌桶算法算法流程图优点缺点 实现其它限流算法 令牌桶算法 令牌桶是一种用于分组交换和电信网络的算法。它可用于检查数据包形式的数据传输是否符合定义的带宽和突发性限制&#xff08;流量不均匀或变化的衡量标准&#xff09;。它还可以用作调度算…

学习threejs,局部纹理刷新,实现图片分块加载

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Texture 贴图 二、&#x1…

超标量处理器设计笔记(10) 寄存器重命名过程的恢复、分发

重命名 寄存器重命名过程的恢复使用 Checkpoint 对 RAT 进行恢复使用 WALK 对 RAT 进行恢复使用 Architecture State 对 RAT 进行恢复总结 分发&#xff08;Dispatch&#xff09; 寄存器重命名过程的恢复 当发生异常、分支预测失败时&#xff0c;指令占用 RAT、ROB 和 Issue …

海康萤石摄像机接入EasyNVR流程:开启RTSP-》萤石视频添加到EasyNVR-》未来支持海康SDK协议添加到EasyNVR

EasyNVR目前支持GB28181、RTSP、ONVIF、RTMP&#xff08;推流&#xff09;这几种协议接入&#xff0c;目前正在增加海康HIKSDK、大华DHSDK等几种SDK的接入&#xff0c;我们今天就介绍一下萤石摄像机怎么通过RTSP接入到EasyNVR。 第一步&#xff1a;萤石摄像机开启 萤石设备默…

Qt编写的文件传输工具

使用QT编写的文件传输工具 文件传输工具通过发送udp广播消息将IP广播给其他开启该程序的局域网机器 文件传输工具 通过发送udp广播消息将IP广播给其他开启该程序的局域网机器 收到的广播消息可以显示在IP地址列表中&#xff0c;点击IP地址可以自动填充到IP地址栏内 选择文件…

【潜意识Java】深入理解 Java 面向对象编程(OOP)

目录 什么是面向对象编程&#xff08;OOP&#xff09;&#xff1f; 1. 封装&#xff08;Encapsulation&#xff09; Java 中的封装 2. 继承&#xff08;Inheritance&#xff09; Java 中的继承 3. 多态&#xff08;Polymorphism&#xff09; Java 中的多态 4. 抽象&…

PWM调节DCDC参数计算原理

1、动态电压频率调整DVFS SOC芯片的核电压、GPU电压、NPU电压、GPU电压等&#xff0c;都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS&#xff08;Dynamic Voltage and Frequency scaling&#xff09;&#xff0c;优化性能和功耗。 比如某SOC在…

OpenCV相关函数

一、二值化函数&#xff08;threshold&#xff09; 功能&#xff1a;将灰度图像转换为二值图像&#xff0c;通常用于图像分割。通过设置阈值&#xff0c;把图像中低于阈值的像素设为0&#xff0c;高于阈值的像素设为1。 参数&#xff1a; src&#xff1a;输入图像。 thresh&a…

bean后处理器的作用

这是beanFactory中常见的一些后处理器&#xff1a; 其中这俩个属于bean后处理器&#xff1a; internalAutowiredAnnotationProcessor解析Autowired、Value internalCommonAnnotationProcessor解析Resource、PostConstruct、PreDestroy Bean后处理器的作用&#xff1a;为Bean…

YOLOv11融合[CVPR2024]Starnet中的star block取模块

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《Rewrite the Stars》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/2403.19967 代码链接&#xff1a;https://github.com/ma-xu/Rewri…

日常灵感:听劝是一种天赋

希望这段分享能给你提供一些新的角度&#xff0c;让你在自己的工作和生活中更好地利用这份“听劝”的天赋&#xff01; 父与子的救赎&#xff1a;听劝的天赋 学霸爸爸李先生是一个典型的"别人家的父母"。 他从小就是学霸&#xff0c;凭借过硬的学习能力从重点高中一…

The Rise and Potential of Large Language ModelBased Agents:A Survey---讨论

讨论 论法学硕士研究与Agent研究的互利性 近年来&#xff0c;随着激光诱导金属化技术的发展&#xff0c;激光诱导金属化与化学剂交叉领域的研究取得了长足的进步&#xff0c;促进了这两个领域的发展。在此&#xff0c;我们期待着LLM研究和Agent研究相互提供的一些益处和发展机…

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…