godot2D游戏教程系列二(21)

前言:

完成目标:

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

完成目标:

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


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

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

效果:

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


二、创建敌人专属状态

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

目的:

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


三、把敌人放进主场景

  • enemy.tscn 拖入主游戏场景

四、实现敌人待机动画

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

效果:

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


五、修复层级显示问题

问题:

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

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

解决:

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

效果:

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


最终效果

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

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

实现过程:

  • 我们右键点击敌人场景的根节点点击添加新的脚本,继承选择基础角色类,然后保存到脚本文件夹中
  • 然后我们为空闲状态添加新的脚本,继承的是状态类,保存到一个新的敌人状态脚本文件夹
  • 为移动状态添加新的脚本
  • 接着我们把敌人场景拖动到主游戏场景中
  • 我们来给敌人写一下待机动画的播放,我们来到空闲状态的脚本,写一下更新函数,我们这里可以直接照搬玩家空闲状态脚本里面的代码,然后进行使用
  • 然后我们会发现,敌人总是在玩家的前面,这个是因为敌人场景没有被拖进那个关卡节点里面进行排序。我们拖动进去之后就可以玩家出现在敌人的前方或者绕道它背后
相关推荐
一只路人甲6 小时前
使用AI快速学习
学习
传奇开心果编程7 小时前
【Rust入门练中学】第2课:变量、可变性与常量
开发语言·学习·rust
一孤程7 小时前
游戏测试专题第七篇:游戏自动化测试实战
游戏·测试
边境悍匪9 小时前
蜗牛学苑 Java 智能体学习 Day42|项目周开发技术汇总 1 思维导图复盘
java·开发语言·spring boot·学习·spring
Gyr09 小时前
浅刷了一遍51CTO软考题库客观题及其解析(4)
学习·软考·知识点·信息安全工程师
是隼人10 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
ι:10 小时前
单相桥式全控整流仿真从零复现教学
windows·学习·matlab·simulink
CAYA-10 小时前
模电笔记1.1 半导体基础与 PN 结
经验分享·笔记·学习方法
传奇开心果编程11 小时前
【Rust入门练中学】 第3课:数据类型
开发语言·学习·rust
humors22111 小时前
今年我正在看、看完和还没看的书单(不定期更新)
学习·阅读·读书·书单·书籍