kyuskoj 发表于 2022-5-4 18:47

Unity 2D Roguelike 官方2D游戏制作实例教程 02.Player and Enemy Animations

02.Player and Enemy Animations
首先创建一个场景
然后创建人物预制体Player
切分好精灵表
将需要的精灵拖动到Player上
动画放在Animation里
动画控制器放在Animator里
再添加Player的下一个动画
创建完成PlayerIdle,PlayerChop,PlayerHit动画
调整速度Base Layer -> Inspector -> Speed 0.5
将Player标签设置为Player
我们添加了额外的标签:Food,Exit,Enemy和Soda
同时设置Layer
所有的碰撞检测都在BlockingLayer中
Player 的Layer为BlockingLayer
然后设置Sprite Renderer里的Sorting Layer
Default
Floot    地板
Items    对象,食物和苏打水
Units    Player和敌人
Player的Sorting Layer设置为Units
接下来,为player添加box collider组件,
以及rigidbody 2D组件
rigidbody 2D中,选中Is Kinematic属性
因为不希望Player蹦蹦跳跳,或飞起来,只想他按照网格做规则运动
将Box Collider 2D的Size调小x:0.9, y:0.9,只有进入到其他物体的格子时才发生碰撞
将Player放入到Prefabs里,创建了player的预制体
在Hierarchy里删除Player
然后创建敌人,创建过程相同
首先为Enemy1创建动画
Enemy1Idle , Enemy1Attack
检查一下是否工作正常
现在添加Rigibody2D和BoxCollider2D
设置Rigibody2D组件的Is Kinematic属性
标签设置为Enemy,Layer设置为BlockingLayer
sprite renderer中的sorting layer设置为Units
现在可以拖动Enemy1到Prefabs文件夹,创建预制体
通过修改Enemy1来创建Enemy2
重命名Enemy2
拖动Enemy2的精灵,创建Enemy2Idle动画,以及Enemy2Attack
把动画控制器Enemy1拖动到Animator文件夹
删除Enemy2Idle和Enemy2Attack
我们这样做是因为Enemy1和Enemy2的状态机是相同的
我们通过重写动画控制器来复用相同的状态机
以及脚本来控制状态转换
不同的只是播放的动画不一样
接下来创建一个Animator OverrideController
命名为Enemy2
首先我们需要制定覆盖哪一个动画控制器
这里我们覆盖Enemy1
用Enemy2的动画覆盖Enemy1的原始动画
将Enemy2的动画控制器设置为这个新的动画控制器
播放场景 好了
最后,把Enemy2也做成预制体
删除hierarchy中的enemy2
将场景保存一下
命名为Main,保存到scenes文件夹
这样我们就做好了基本的player和enemy预制体
之后我们要做贴片预制体
我们将要用它们摆出游戏地板
下一个视频,我们会创建floor,wall,food,soda和exit的预制体
页: [1]
查看完整版本: Unity 2D Roguelike 官方2D游戏制作实例教程 02.Player and Enemy Animations