godot2D游戏教程系列二(21)

前言:

完成目标:

成功创建敌人场景,并完成基础动画设置。

完成目标:

成功让敌人拥有自己的逻辑脚本,并正确播放动画与层级排序。


一、让敌人继承基础角色类

  • 给 Enemy 根节点添加脚本
  • 继承 base_character
  • 保存到脚本文件夹

效果:

敌人复用角色基础功能(动画、移动、状态支持等)。


二、创建敌人专属状态

  • 给 Idle 状态添加脚本
  • 继承 State
  • 存放到"敌人状态"文件夹
  • 给 Move 状态添加脚本

目的:

敌人与玩家状态逻辑分开管理。


三、把敌人放进主场景

  • enemy.tscn 拖入主游戏场景

四、实现敌人待机动画

  • 在敌人 Idle 状态脚本中
  • 在更新函数里调用播放待机动画
  • 逻辑可参考玩家 Idle 状态

效果:

敌人进入游戏自动播放待机动画。


五、修复层级显示问题

问题:

敌人始终显示在玩家前面。

原因: 敌人不在 ​​Level​​ 节点下,未参与 Y 轴排序。

解决:

  • 将 Enemy 拖入 Level 节点
  • 启用 Y 轴排序

效果:

玩家可以走到敌人前后,遮挡关系正确。


最终效果

  • 敌人继承基础角色系统
  • 有独立状态脚本
  • 能播放待机动画
  • 正确参与场景层级排序

敌人角色正式完成基础结构搭建。

实现过程:

  • 我们右键点击敌人场景的根节点点击添加新的脚本,继承选择基础角色类,然后保存到脚本文件夹中
  • 然后我们为空闲状态添加新的脚本,继承的是状态类,保存到一个新的敌人状态脚本文件夹
  • 为移动状态添加新的脚本
  • 接着我们把敌人场景拖动到主游戏场景中
  • 我们来给敌人写一下待机动画的播放,我们来到空闲状态的脚本,写一下更新函数,我们这里可以直接照搬玩家空闲状态脚本里面的代码,然后进行使用
  • 然后我们会发现,敌人总是在玩家的前面,这个是因为敌人场景没有被拖进那个关卡节点里面进行排序。我们拖动进去之后就可以玩家出现在敌人的前方或者绕道它背后
相关推荐
QuZhengRong12 分钟前
【AI】Agent 全栈进阶|Agent 设计模式
人工智能·学习·设计模式·llm·agent
ouynagda35 分钟前
Linux多线程:互斥锁与信号量学习笔记
linux·笔记·学习
小蜗 strong1 小时前
ATA各个章节
学习
可爱系程序猿2 小时前
OpenAL32.dll 加载失败排查:音频中间件位数、游戏私有目录与声卡驱动如何对应
程序人生·游戏·电脑
MartinYeung52 小时前
[论文学习]谄媚研究者驱动表演性错位:大语言模型“对齐伪装”成因的颠复性实证研究
人工智能·学习·语言模型
SmalBox2 小时前
【扭曲着色器】Unity实现-黑洞扭曲效果
unity3d·游戏开发·图形学
red_redemption2 小时前
自由学习记录(222)
学习
鱼很腾apoc2 小时前
【Linux】第13期 详解应用层协议HTTP+Cookie/Session+HTTPS
linux·服务器·c++·学习·http·https
疯狂打码的少年3 小时前
【数据库技术】两级映像与数据独立性(逻辑/物理独立性)
数据库·笔记
web行路人3 小时前
AI 全栈学习之旅 - Week4:容器化部署与生产环境实战
python·学习