【Godot4自学手册】第三十四节来回无限滚动的伤害铁刺球

本文介绍了如何在GODOT游戏引擎中创建一个具有左右和上下滚动的铁刺球,当主角触碰时造成伤害。通过新建场景、脚本控制铁刺移动和碰撞检测实现机关设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节主要学习给地宫添加来回滚动的铁刺球,铁刺球共有两个方向,一个是左右方向;另一个是上下方向。如果主人公不小心碰到球,就会收到伤害。这是地宫的第一个机关。

一、新建场景并布局节点

把我们准备好的铁球图片素材拖入到文件系统的Sprites->Objects目录下。
然后新建Node2D场景,命名为RollingBar,存到Scenes目录下。将素材拖入到场景中。
请添加图片描述

二、让铁球无限滚动

选择根目录,添加脚本命名RollingBar.gd保存到Scripts目录下,编写如下脚本:

extends Node2D
@onready var moving_spikes = $MovingSpikes  #获取铁刺结点
@export var move_length:=Vector2(100.0,0.0)  #定义铁刺移动距离,并可以在外部调整
@export var move_time:float=0.8  #定义铁刺单次滚动时间,并可以在外部调整

func _ready():
	move()  #调用移动函数
	
func move():
	var tween = get_tree().create_tween()  #创建tween移动类
	tween.set_ease(Tween.EASE_IN_OUT)
	#EASE_IN = 0  插值开始缓慢,并加速接近结束。
	#EASE_OUT = 1  插值开始快速,接近结束时减慢。
	#EaseType EASE_IN_OUT = 2  EASE_IN 和 EASE_OUT 的组合。两端的插值最慢。
	#EaseType EASE_OUT_IN = 3  EASE_IN 和 EASE_OUT 的组合。两端的插值最快。
	tween.tween_property(moving_spikes,"position",moving_spikes.position+move_length,move_time)
	#设置铁刺move_time时间内完成move_length的距离
	move_length *=-1  #改变move_length的方向
	tween.tween_callback(move) 
	#铁刺移动到指定位置,转变方向继续移动,函数的递归,函数自己调用自己,只是参数不同

三、给铁球添加伤害

为根节点添加Area2D节点,命名为HitSpikes,为该节点添加CollisionShape2D子节点,然后在其检查器中Shape属性选择新建CircleShape2D,然后调整合适大小。
请添加图片描述

然后将HitSpikes的Collision下Layer设置为Object,Mask设置为Player,表示铁刺球和主人公发生碰撞。
请添加图片描述

然后选择切换到信号节点,找到body_entered(body:Node2D),双击弹出对话框选择RollingBar。
请添加图片描述

然后在代码页面输入如下代码:

func _on_hit_spikes_body_entered(body):
	if body.name=="Player":
		body.state=3

这样就完成了主人公的受伤功能了。

四、主场景横竖两个方向调用铁球

切换到underground场景,将上述建立的RollingBar场景2次实例化到该场景,移动到合适位置。如下图:
请添加图片描述

位置1的参数设置如下:
请添加图片描述

位置2的参数设置如下:
请添加图片描述

这样就实现了一个左右移动和上下移动的铁刺:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游戏自学

生活不易,打赏随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值