返回介绍

整活:敌人

发布于 2024-01-08 20:55:53 字数 3707 浏览 0 评论 0 收藏 0

本章节的整活部分将在上一章的结果上,做出这样一个东西:

展示

在这个游戏中,玩家可以切换两种武器攻击敌人,敌人则会一直追着玩家,敌人接触玩家会让玩家受到伤害。

屏幕左上角可以看到玩家的血量和使用的武器。

敌人节点

本节来实现敌人,敌人作为一个会移动的物体,使用 RigidBody2D 作为根节点:

敌人节点

敌人移动

敌人的移动逻辑很简单,就是一直向玩家方向跑过去。

所以第一步是需要获取到玩家节点:

var 目标:RigidBody2D

func _ready():
    目标 = $"/root/Game/玩家"

接着,只需要在 _physics_process 方法中不断向玩家移动即可:

@export var 移动速度:float = 300

func _physics_process(delta):
    var 移动方向 = (目标.global_position - global_position).normalized()
    move_and_collide(移动方向 * 移动速度 * delta)

敌人受击

敌人会被玩家用子弹攻击,所以我们可以给敌人定义一个血量变量和一个受到攻击的方法:

var 生命值:int = 10

func 受伤(伤害:int):
    生命值 -= 伤害
    if 生命值 <= 0:
        queue_free()

接着修改子弹的代码:

func _on_body_entered(body:PhysicsBody2D):
    # 给敌人节点添加到“敌人”组中。
    if body.is_in_group("敌人"):
        body.受伤(4) # 对敌人造成 4 点伤害
        queue_free()

在场景中放几个敌人,运行游戏试试吧。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文