godot2D游戏教程系列二(21)

前言:

完成目标:

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

完成目标:

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


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

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

效果:

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


二、创建敌人专属状态

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

目的:

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


三、把敌人放进主场景

  • enemy.tscn 拖入主游戏场景

四、实现敌人待机动画

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

效果:

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


五、修复层级显示问题

问题:

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

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

解决:

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

效果:

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


最终效果

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

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

实现过程:

  • 我们右键点击敌人场景的根节点点击添加新的脚本,继承选择基础角色类,然后保存到脚本文件夹中
  • 然后我们为空闲状态添加新的脚本,继承的是状态类,保存到一个新的敌人状态脚本文件夹
  • 为移动状态添加新的脚本
  • 接着我们把敌人场景拖动到主游戏场景中
  • 我们来给敌人写一下待机动画的播放,我们来到空闲状态的脚本,写一下更新函数,我们这里可以直接照搬玩家空闲状态脚本里面的代码,然后进行使用
  • 然后我们会发现,敌人总是在玩家的前面,这个是因为敌人场景没有被拖进那个关卡节点里面进行排序。我们拖动进去之后就可以玩家出现在敌人的前方或者绕道它背后
相关推荐
风123456789~2 小时前
【架构专栏】第2章 计算机系统基础知识 1/3
笔记·架构
会算数的⑨2 小时前
Spring AI Alibaba 学习(四):ToolCalling —— 从LLM到Agent的华丽蜕变
java·开发语言·人工智能·后端·学习·saa·ai agent
2301_764441332 小时前
使用Python 和 Streamlit 构建的多维度游戏玩家数据分析
python·游戏·数据分析
小陈phd2 小时前
多模态大模型学习笔记(二十五)—— 核心技术篇② | 虚拟人的大脑:国内头部大语言模型全解析
笔记·学习·语言模型
VelinX2 小时前
【个人学习||算法】动态规划
学习·算法·动态规划
稽稽稽稽不如人2 小时前
《从零开始的java从入门到入土的学习生活——JavaWeb后端篇》Chapter19——JavaWeb后端篇学习记录——Spring事务管理、异常处理
java·学习·生活
TON_G-T2 小时前
深入学习webpack-tapable
前端·学习·webpack
半路_出家ren2 小时前
Nginx基础学习
运维·网络·网络协议·学习·nginx·网络安全
浅念-2 小时前
Linux 基础命令与核心知识点
linux·数据结构·c++·经验分享·笔记·算法·ubuntu