godot2D游戏教程系列二(21)

前言:

完成目标:

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

完成目标:

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


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

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

效果:

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


二、创建敌人专属状态

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

目的:

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


三、把敌人放进主场景

  • 将 enemy.tscn 拖入主游戏场景

四、实现敌人待机动画

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

效果:

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


五、修复层级显示问题

问题:

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

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

解决:

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

效果:

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


最终效果

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

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

实现过程:

  • 我们右键点击敌人场景的根节点点击添加新的脚本,继承选择基础角色类,然后保存到脚本文件夹中
  • 然后我们为空闲状态添加新的脚本,继承的是状态类,保存到一个新的敌人状态脚本文件夹
  • 为移动状态添加新的脚本
  • 接着我们把敌人场景拖动到主游戏场景中
  • 我们来给敌人写一下待机动画的播放,我们来到空闲状态的脚本,写一下更新函数,我们这里可以直接照搬玩家空闲状态脚本里面的代码,然后进行使用
  • 然后我们会发现,敌人总是在玩家的前面,这个是因为敌人场景没有被拖进那个关卡节点里面进行排序。我们拖动进去之后就可以玩家出现在敌人的前方或者绕道它背后
相关推荐
郝学胜_神的一滴15 小时前
游戏引擎原理与实践 04:拆解引擎基础系统与内存管理
c++·游戏
小雪崩16 小时前
嵌入式学习 day61-62:IMX6ULL驱动——系统移植
学习
一隅论数智17 小时前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
我命由我1234517 小时前
Photoshop - Photoshop 使用内容识别填充移除对象
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·photoshop
梓雨枔18 小时前
JavaScript+快速学习,简单好用~
javascript·学习
老王爱玩车18 小时前
自定义类型:结构体
c语言·开发语言·学习
JWASX19 小时前
Java 转 go 学习 - GRPC(1)
学习·golang
鬼手点金20 小时前
opencode-全能开发者配置
java·linux·服务器·前端·javascript·学习·前向传播
代码山河20 小时前
Java学习路线图:2026年最新版,从入门到架构师
java·学习·架构·教程·面向对象·项目
sunoo-22920 小时前
【嵌入式Linux驱动学习】Day1-Day2 全流程梳理:环境搭建→U-Boot→内核→根文件系统→驱动基础
linux·运维·驱动开发·笔记·学习·阿里云·恩智浦