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

news/2024/4/30 1:43:17

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

一、添加完善节点

切换到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,完成了。效果如下:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11677.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

jQuery(一)

文章目录 1. 基本介绍2.原理示意图3.快速入门1.下载jQuery2.创建文件夹,放入jQuery3.引入jQuery4.代码实例 4.jQuery对象与DOM对象转换1.基本介绍2.dom对象转换JQuery对象3.JQuery对象转换dom对象4.jQuery对象获取数据获取value使用val()获取…

流域生态系统水-碳-氮耦合过程模拟

流域是一个相对独立的自然地理单元,它是以水系为纽带,将系统内各自然地理要素连结成一个不可分割的整体。碳和氮是陆地生态系统中最重要的两种化学元素,而在流域系统内,水-碳-氮是相互联动、不可分割的耦合体。随着流域内人类活动…

【VTKExamples::Meshes】第七期 TableBasedClipDataSetWithPolyData

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TableBasedClipDataSetWithPolyData,并解析接口vtkTableBasedClipDataSet,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你…

vue想要突破全局样式限制又不影响别的页面样式怎么办

<!-- 用scope盖不住全局&#xff0c;随意来个class匹配私定&#xff0c;搜索关键词&#xff1a;不要随便改&#xff0c;乱打class名 --> <style> .lkajsdfjkalsfhkljashkflhaskl .el-input.el-input--default.el-input--suffix { width: 160px !important; } …

STM32实现软件SPI对W25Q64内存芯片实现读写操作

先看看本次实验的成果吧&#xff1a; 这么简单的一个程序&#xff0c;我学习了一个星期左右&#xff0c;终于把所有的关节都打通了。所有代码都能什么都不看背着敲出来了。为了使自己的记忆更为清晰&#xff0c;特意总结了一个思维导图&#xff0c;感觉自己即便是日后忘记了看一…

【图论】知识点集合

边的类型 neighbors(邻居)&#xff1a;两个顶点有一条共同边 loop&#xff1a;链接自身 link&#xff1a;两个顶点有一条边 parallel edges&#xff1a;两个顶点有两条及以上条边 无向图 必要条件&#xff1a;删掉顶点数一定大于等于剩下的顶点数 设无向图G<V,E>是…