前言:
- 我是根据b站上的视频进行学习,并且总结写下笔记,然后做此分享。笔记非常详细以至于你可以通过查看文章进行快速学习并且制作出游戏出来。当然视频学习的链接我也放在下面了:
- 视频学习:https://www.bilibili.com/video/BV1Nd25BNEA6?spm_id_from=333.788.player.switch\&vd_source=078d5d025b9cb472d70d8fda1a7dc5a6\&p=15
- 音频/美术资源包下载: https://pan.baidu.com/s/1mY05SbG3XFUpn-qiKxDRhw?pwd=b6bg
完成目标:
成功创建敌人场景,并完成基础动画设置。
完成目标:
成功让敌人拥有自己的逻辑脚本,并正确播放动画与层级排序。
一、让敌人继承基础角色类
- 给 Enemy 根节点添加脚本
- 继承
base_character - 保存到脚本文件夹
效果:
敌人复用角色基础功能(动画、移动、状态支持等)。
二、创建敌人专属状态
- 给 Idle 状态添加脚本
- 继承
State - 存放到"敌人状态"文件夹
- 给 Move 状态添加脚本
目的:
敌人与玩家状态逻辑分开管理。
三、把敌人放进主场景
- 将
enemy.tscn拖入主游戏场景
四、实现敌人待机动画
- 在敌人 Idle 状态脚本中
- 在更新函数里调用播放待机动画
- 逻辑可参考玩家 Idle 状态
效果:
敌人进入游戏自动播放待机动画。
五、修复层级显示问题
问题:
敌人始终显示在玩家前面。
原因: 敌人不在 Level 节点下,未参与 Y 轴排序。
解决:
- 将 Enemy 拖入
Level节点 - 启用 Y 轴排序
效果:
玩家可以走到敌人前后,遮挡关系正确。
最终效果
- 敌人继承基础角色系统
- 有独立状态脚本
- 能播放待机动画
- 正确参与场景层级排序
敌人角色正式完成基础结构搭建。
实现过程:
- 我们右键点击敌人场景的根节点点击添加新的脚本,继承选择基础角色类,然后保存到脚本文件夹中

- 然后我们为空闲状态添加新的脚本,继承的是状态类,保存到一个新的敌人状态脚本文件夹

- 为移动状态添加新的脚本

- 接着我们把敌人场景拖动到主游戏场景中

- 我们来给敌人写一下待机动画的播放,我们来到空闲状态的脚本,写一下更新函数,我们这里可以直接照搬玩家空闲状态脚本里面的代码,然后进行使用

- 然后我们会发现,敌人总是在玩家的前面,这个是因为敌人场景没有被拖进那个关卡节点里面进行排序。我们拖动进去之后就可以玩家出现在敌人的前方或者绕道它背后
