avatar

code-xz

寻桨的舟

  • 首页
  • Java
  • godot入门教程
  • 技术文章收录
  • redis
  • 其他
Home Godot入门教程-04创建敌人
文章

Godot入门教程-04创建敌人

Posted 2023-03-24 Updated 2024-09- 13
By Administrator
19~25 min read

是时候去做一些玩家必须躲避的敌人了. 它们的行为很简单: 怪物将随机生成在屏幕的边缘, 沿着随机的方向直线移动.

我们将创建一个 Mob 的怪物场景,以便在游戏中独立实例化出任意数量的怪物。

节点设置

点击顶部菜单的“场景 -> 新建场景”,然后添加以下节点:

  • RigidBody2D(名为 Mob)

  • AnimatedSprite2D

  • CollisionShape2D

  • VisibleOnScreenNotifier2D

别忘了设置子项,使其无法被选中,就像你对 Player 场景所做的那样。

选择 Mob 节点,并在检查器的 RigidBody2D 部分中把它的 Gravity Scale 属性设置为 0 。这样可以防止怪物向下坠落。

此外,在 RigidBody2D 部分下方的 CollisionObject2D 部分下,展开 Collision 分组并取消选中 Mask 属性里的 1。这将确保怪物们不会相互碰撞。

godotrumen4-01.png

像设置玩家一样设置 AnimatedSprite2D。这一次,我们有 3 个动画:fly、swim、walk,每个动画在 art 文件夹中都有两张图片。

必须为每个单独动画设置 动画速度 属性,将三个动画的对应动画速度值都调整为 3。

godotrumen4-02.png

你可以使用 动画速度 输入区域右侧的“播放动画”按钮预览动画。

我们将随机选择其中一个动画,以便小怪有一些变化。

像玩家的图像一样,这些小怪的图像也要缩小。请将 AnimatedSprite2D 的 Scale 属性设为 (0.75, 0.75)。

像在 Player 场景中一样,为碰撞添加一个 CapsuleShape2D。为了使形状与图像对齐,你需要将 Rotation 属性设为 90(在“检查器”的“Transform”下)。

保存该场景。

敌人的脚本

像这样将脚本添加到 Mob 上:

GDScript

extends RigidBody2D

现在让我们看一下脚本的其余部分。在 _ready() 中,我们从三个动画类型中随机选择一个播放:

GDScript

func _ready():
	var mob_types = $AnimatedSprite2D.sprite_frames.get_animation_names()
	$AnimatedSprite2D.play(mob_types[randi() % mob_types.size()])

首先,我们从 AnimatedSprite2D 的 sprite_frames 属性中获取动画名称的列表。返回的是一个数组,该数组包含三个动画名称:["walk", "swim", "fly"]。

然后我们需要在 0 和 2 之间选取一个随机的数字, 以在列表中选择一个名称(数组索引以 0 起始). randi() % n 会在 0 and n-1 之中选择一个随机整数.

最后一步是让怪物在超出屏幕时删除自己。将 VisibleOnScreenNotifier2D 节点的 screen_exited() 信号连接到 Mob 上,然后添加如下代码:

GDScript

func _on_visible_on_screen_notifier_2d_screen_exited():
	queue_free()

这样就完成了 Mob 场景。

玩家和敌人已经准备就绪,接下来,我们将在一个新的场景中把他们放到一起。我们将使敌人在游戏板上随机生成并前进,我们的项目将变成一个能玩的游戏。

godot入门教程
godot
License: 
Share

Further Reading

Apr 21, 2023

Godot入门教程-08导出-打包成.exe

首先,在编辑器-编辑器设置-导出-Windows中设置rcedit工具 rcedit下载地址:https://github.com/electron/rcedit/releases 设置好后即可打包(默认即可)

Apr 14, 2023

Godot入门教程-07背景及音效

现在,我们已经完成了游戏的所有功能。以下是一些剩余的步骤,为游戏加点“料”,改善游戏体验。 随意用你自己的想法扩展游戏玩法。 背景 默认的灰色背景不是很吸引人,那么我们就来改一下颜色。一种方法是使用

Apr 7, 2023

Godot入门教程-06游戏信息显示

我们的游戏最后还需要用户界面(User Interface,UI),显示分数、“游戏结束”信息、重启按钮。 创建新场景,点击“其他节点”按钮,然后添加一个 CanvasLayer 节点并命名为

OLDER

Godot入门教程-03编写玩家代码

NEWER

Godot入门教程-05游戏主场景

Recently Updated

  • Katago调研报告
  • 实现接口性能压测工具类
  • 多线程任务批处理通用工具类
  • 异步机制:如何避免单线程模型的阻塞?
  • 消息队列的考验:Redis有哪些解决方案?

Trending Tags

godot redis

Contents

©2025 code-xz. Some rights reserved.

Using the Halo theme Chirpy