【Godot4自学手册】第十节将场景添加到TileSet绘制背景,主人公走到房子后面房子变得半透明

本文介绍了如何在Godot游戏引擎中创建新场景,将House场景作为TileMap背景,并通过Area2D和CollisionShape2D实现当主人公进入或离开房子时房子透明度的变化。
摘要由CSDN通过智能技术生成

这节主要学习将场景添加到TileSet作为TileMap来搭建背景。同时,主人公进入房子后面,房子变得半透明,离开房子后房子变的不透明。

一、创建新场景

首先导入房子素材,最终文件系统内容如下:
请添加图片描述

点击新建场景按钮,然后选择其它节点,在弹出对话框中找到StaticBody2D节点,点击创建。
请添加图片描述

为啥选用StaticBody2D节点,是因为房子是不可移动的符合StaticBody2D节点特征。StaticBody2D节点表示无法被外力移动的 2D 物理物体。无法因外力和接触而移动,但可以通过代码方法手动移动。添加节点后会在节点后面有个叹号,双击提示如下:
请添加图片描述

给 添加连个子节点:
一是Sprite2D节点,将房屋的图片拖到该节点检查器texture内,如下图:
请添加图片描述

二是CollisionPolygon2D节点。然后在主场景中沿着房屋边缘绘制碰撞形状,最终效果如下:
请添加图片描述

最后保存该场景到Scenes文件夹下,命名为House。

二、将场景添加到TileSet绘制背景

切换到TileSet面板,把House场景添加到图块内,第一步切换到TileSet选项卡,第二步添加按钮选择场景合集;第三步将House.tscn拖入到场景集合内,这样就可以绘制背景了,操作过程如下:
请添加图片描述

切换到TileMap就可以在场景中绘制房屋了。
请添加图片描述

三、主人公走到房子后面房子变得半透明

切换到House场景,在House结点下Area2D结点,Area2D结点下添加CollisionShape2D结点,CollisionShape2D检查器中shap属性选择RectangleShape2D表示2D 矩形。整个过程如下:
请添加图片描述

选择House结点,单击添加脚本按钮,选择脚本存放路径为Scripts文件夹内,如下:
请添加图片描述

代码中只保留下一行,其他删除。
extends StaticBody2D
然后选择Area2D结点,在结点选项卡中将body_entered信号添加到House结点的文本中。
请添加图片描述

这样会在代码中添加func _on_area_2d_body_entered(body):代码。简单介绍一下body_entered信号和body_exite信号。
1.body_entered(body: Node2D)当接收到的 body 进入这个区域时发出的。body 可以是一个 PhysicsBody2D 或一个 TileMap。如果 TileMap 的 TileSet 配置了碰撞形状,就会被检测到。需要将 monitoring 设置为 true 。
2.body_exited(body: Node2D)当接收到的 body 离开这个区域时发出的。body 可以是一个 PhysicsBody2D 或一个 TileMap。如果 TileMap 的 TileSet 配置了碰撞形状,就会被检测到。要求 monitoring 被设置为 true 。
同理在House代码中添加body_exited信号。然后将代码完善成如下:
请添加图片描述

extends StaticBody2D
@onready var  house = $Sprite2D #获取房屋图片
func _on_area_2d_body_entered(body):
	#当主人公与入Area2D区域
	if body.name=="Player":#进入该区域的是主人公
		house.modulate.a =0.5#透明度设置为0.5
func _on_area_2d_body_exited(body):
	#当主人公离开Area2D区域
	if body.name=="Player":#走出该区域的是主人公
		house.modulate.a =1#透明度设置为1

这段代码表示当主人公进入Area2D区域后,房子变成透明;当主人公离开Area2D区域后,房子变为不透明。
最终演示效果如下所示:
请添加图片描述

这一节就到此了,同学再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游戏自学

生活不易,打赏随意

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

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

打赏作者

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

抵扣说明:

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

余额充值