首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Unity游戏开发入门】编写简单脚本让自己游戏中的物体“动”起来

【Unity游戏开发入门】编写简单脚本让自己游戏中的物体“动”起来

原创
作者头像
全栈开发日记
发布2025-09-09 13:51:26
发布2025-09-09 13:51:26
560
举报
文章被收录于专栏:全栈开发日记全栈开发日记

如果不了解Unity编辑器可以先简单看一下往期文章:

1、【Unity游戏开发入门】认识编辑器

2、【Unity游戏开发入门】游戏资源商店资源导入

Unity中能让游戏物体动起来的技术叫做“动画”。Unity提供两种组件创建动画,一种是(Animator),另一种是(Animation);Animation是旧版Unity动画,下面的教程全部基于新版Animator进行。

1、添加Animator组件

在游戏场景中点击游戏物体后在出现的游戏物体检查器中选择添加组件

添加组件
添加组件

搜索并选择Animator组件。

添加Animator组件
添加Animator组件

刚添加的Animator组件如下图所示,其中控制器是控制动画状态,也是下面重点说明的。Avatar是动画骨骼,一般用于游戏角色等有肢体运动的游戏物体。

Animator组件
Animator组件

2、添加控制器(可省略)

此步骤可省略,在下一章节创建动画中通过动画窗口创建动画时会连同创建控制器。

右键项目窗口,创建动画器控制器

创建动画器控制器
创建动画器控制器

刚创建的控制器需要进行命名,随机起一个名称,见名知意即可。双击刚刚创建的控制器,会打开一个动画器窗口。该窗口用于控制动画与动画之间的状态,暂时还没有任何东西,需要先创建一个动画。

3、创建动画

打开动画窗口,窗口-动画-动画打开。

打开动画窗口
打开动画窗口

刚打开的动画窗口会显示“没有选定可动画对象”,说明我们还没有选择游戏物体,它不知道要为谁创建动画。

我们切换到游戏场景窗口,并选择一个游戏物体,此时动画窗口就会出现创建按钮,表示为该游戏物体创建一个动画。点击创建按钮后在弹出的窗口选择动画文件的存储位置并命名即可。

创建动画
创建动画

此操作会连同创建一个动画控制器,如果只想创建动画,可以在右键项目栏,在创建-动画中创建一个动画。

4、添加动画

动画窗口中点击添加属性选择当前游戏物体拥有的组件,这里就以Transform组件的位置来进行示例。

添加动画
添加动画

点击动画窗口左上角的红色小圆点,进行录制动画。同时拖动时间轴上的白线到指定的关键帧处,并在游戏场景中改变游戏物体位置后再次点击红色小圆点完成录制,这样一个简单的动画就录制完成了。

动画效果
动画效果
动画效果
动画效果

注意看当白线所处的时间轴不同时,小船的位置会随着变更。

5、应用动画

再次点击游戏物体,并将刚刚创建的动画控制器拖到Animator组件上应用。

应用动画控制器

此时运行游戏就可以看到动画效果了。

6、动画控制器

通过窗口-动画的方式创建动画时会自动创建动画控制器,所以上面我没有讲控制器的用法。如果你打开刚刚自动创建的动画控制器可以看到如下图所示的界面。

动画控制器窗口
动画控制器窗口

系统自动将刚刚创建的动画WoodBoat加入到了控制器中,如果当前游戏物体有很多动画,你也可以直接将它拖到控制器画布中,并创建过渡来让动画生效。

过渡通过右键画布中的节点来创建,表示当前动画可以过渡到哪个动画上。比如一个玩家游戏物体同时有跑步、跳跃两个动画,我们就需要将跑步过渡到跳跃动画上,同时跳跃完了之后继续跑步动画。

动画控制器中的Entry指向的表示当前游戏物体的初始动画。Any State指向的表示所有动画都可以过渡到当前动画中,而不需要所有动画都创建一个过渡给当前动画。Exit表示退出动画。

7、脚本控制动画

这里以一个老虎的游戏模型举例,它有站立、慢走、跑步三个动画,该游戏物体的动画控制器如下图所示。

老虎的动画控制器
老虎的动画控制器

通过创建不同的参数,来控制动画生效的时机,点击参数创建一个Bool类型的参数,表示当前动画生效条件。

鼠标单击Any Staterun的连线,并且在检查器中将刚刚创建的IsRunning参数添加到Conditions中,表示当前动画激活的条件。

动画控制器参数
动画控制器参数

其他的动画也是相同做法。在脚本中通过游戏物体获取动画控制器组件,并通过控制器组件设置控制器组件中的参数值就能控制哪个动画生效了。

下面是C#代码示例:

代码语言:txt
复制
public Transform npc; // 对外参数
private Animator animator; // 动画控制器组件

void Start(){
    // 获取动画控制器组件
    animator = npc.GetComponent<Animator>(); 
}

// 配合其他逻辑就可以自由切换各种动画
void Update(){
    // 设置控制器参数值
	animator.SetBool("IsWalking", true);
	animator.SetBool("IsRunning", false); 
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、添加Animator组件
  • 3、创建动画
  • 4、添加动画
  • 5、应用动画
  • 6、动画控制器
  • 7、脚本控制动画
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档