【Godot4自学手册】第三十五节摇杆控制开门

本文介绍了如何在游戏开发中,通过编程实现地宫墙壁上的门的安装和控制,包括添加门和开关节点,设置节点属性,以及编写代码来处理开关触发和门的打开动画。

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

本节主要实现,在地宫墙壁上安装一扇门,在核实安装一个开门的摇杆,攻击摇杆,打开这扇门,但是只能攻击一次,效果如下:
请添加图片描述

一、添加完善节点

切换到underground场景,先将TileMap修改一下留出一个可以通过的缺口,并铺设地面,如下:
请添加图片描述

1.门的节点有关情况

为根节点添加Node2D节点,命名为Doors,用于存放跟门有关节点,方面管理。然后为该节点添加StaticBody2D节点,命名为DoorSta,表示静态节点,一般用于不动的委托;添加AnimatedSprite2D节点命名为DoorAnima,用于展示门的开和关动画;添加CollisionShapte2D节点,命名为DoorColl,用于碰撞检测,当门关闭时,人是不能进入的,当打开时人才能通过。
请添加图片描述

2.开关节点有关情况

为Doors节点添加Area2D节点,存放机关相关节点。为该节点添加加AnimatedSprite2D子节点,命名为SwitchAnima,用于展示开关的开和关动画;添加CollisionShapte2D节点,命名为SwitchColl,用于碰撞检测,当检测到主人公攻击时,开关进行开关切换,并变道开的状态,检测实效,再次攻击不起作用。

二、设置节点属性

1.门的节点有关属性设置

DoorAnima节点的检查器中Animation->Sprite Frames设置为新建SpriteFrames,在其动画帧面板上新建两个动画,一个是Close动画另一个是Open动画。其实动画就是素材图片图片中的两个帧图片。
请添加图片描述

DoorColl节点检查器中CollisionShape2d->Shape设置为新建RectangeShape2D,并调整到合适大小和位置。最后将我们的门移动我们预留的位置。
请添加图片描述

2.开关节点有关属性的设置

给SwitchAnima节点添加3个动画,一是Close动画,表示门关闭状态开关状态,并设置为自动播放。
请添加图片描述

二是Charge动画表示,开关启动动画。
请添加图片描述

三是Open动画表示门被打开后的动画。
请添加图片描述

SwitchColl节点检查器中CollisionShape2d->Shape设置为新建RectangeShape2D,并调整到合适大小和位置。最后将开关拖到合适位置。
请添加图片描述

三、编写代码

1.为Switch节点编写代码

先为该节点设置编写代码文件。然后切换到该节点的信号节点,双击area_entered(area:Area2D)选择Switch节点代码,这样就连接起来了。
请添加图片描述

编写如下代码:

extends Area2D
@onready var switch_anima = $SwitchAnima  #获取开关的动画节点
@onready var switch_coll = $SwitchColl  #获取开关的碰撞区域
signal  switch_trigerred  #定义触发开关信号

func _on_area_entered(area):#当主人公攻击该开关时发生
	switch_coll.set_deferred("disabled",true)  #设置开关碰撞区域实效,只能单击一次
	switch_anima.play("Charge") #播放开关切换动画
	await switch_anima.animation_finished #等待开关动画播放完毕
	switch_trigerred.emit()  #发出触发开关信号
	switch_anima.play("Open")  #开关动画播放完成动画
1.给DoorSta节点编写代码

先为该节点设置编写代码文件。然后切换到Switch节点的信号节点,双击Switch_trigerred选择DoorSta节点代码,这样就连接起来了。
请添加图片描述

编写如下代码:

extends StaticBody2D
@onready var door_anima = $DoorAnima  #获取门的动画节点
@onready var door_coll = $DoorColl  #获取门的碰撞区域

func _on_switch_switch_trigerred():#当开关处于打开状态执行
	door_anima.play("Open")  #播放开门动画
	door_coll.set_deferred("disabled",true)  #门的碰撞区域不可用,人可以传过大门

ok,完成了。效果如下:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游戏自学

生活不易,打赏随意

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

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

打赏作者

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

抵扣说明:

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

余额充值