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

news2024/10/7 4:34:10

这节主要学习将场景添加到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区域后,房子变为不透明。
最终演示效果如下所示:
请添加图片描述

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

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

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

相关文章

Origin 2022下载安装教程,操作简单,小白也能轻松搞定,附安装包,带软件使用教程

前言 Origin是一个科学绘图、数据分析软件,支持各种各样的2D/3D图形,包括统计,信号处理,曲线拟合以及峰值分析,Origin具有强大的数据导入功能和多样的图形输出格式。 准备工作 1、Win7及以上系统 2、提前准备好 Or…

标注数据集 --labelimg

前言:我们想要训练自己的数据集时,通常需要自己标注数据集。无论是标注成yolo可识别的txt格式还是voc数据集的xml格式。使用labelimg标注都是一个不错的选择。 下面我们就从创建环境,使用labelimg进行标注两个方面来说明。 1.创建labelimg环境…

flutter 五点一点五:MaterialApp Theme一堆主题

一堆主题 大部分都是统一设置组件的默认样式的主题 具体属性基本上与相关组件一致 具体再学习组件时 说明 IconThemeData? iconTheme, // 设置icon的颜色 Appbar中的icon无效 IconThemeData primaryIconTheme, // 与primaryColor形成对比的图标主题IconThemeData accentIconT…

arcgis 如何计算线的长度和面的面积

一、线要素长度计算 1.打开线shp图层,右键图层-打开属性表(CtrlT) 2.在表选项里选添加字段 添加成功后,属性表多了一个新添加的字段 3.右键点击长度选择计算几何 二、面要素面积计算 面积计算跟长度计算一样,…

linux jenkins相关命令

1.jenkins启动命令 [rootlocalhost /]#service jenkins start 2.jenkins停止命令 [rootlocalhost /]#service jenkins stop 3.查询jenkins状态命令 [rootlocalhost /]#service jenkins status 4.重启jenkins命令 [rootlocalhost /]#service jenkins restart Jenkins默认的端口号…

WINDOWS中电源设置小工具

你可以使用WinPowerSet,玩CS2之前,把电源设置为“高性能”,玩后设置为“平衡”。 WinPowerSet 下载地址: 链接:https://pan.baidu.com/s/1iOp29c4ica9L47t_l9lZ2w?pwdd248 提取码:d248 最近新配了一台12…

flutter 搜索框实现,键盘搜索按钮,清空,防抖

import package:flutter/material.dart; import package:flutter_screenutil/flutter_screenutil.dart; import package:flutter_svg/svg.dart; import package:sy_project/config/app_colors.dart; import package:sy_project/core/assets.dart;/// 搜索textview class Custom…

Qt 基础之QDataTime

Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算…

C语言字符串操作函数详解①strlen函数的讲解与三种模拟实现方法(建议三连收藏)

目录 ​编辑 前言 1.strlen函数介绍 2.模拟实现strlen 2.1计数器做法 2.2不创建临时变量,通过递归的方法 2.3利用两个指针相减 3.结语 前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量…

DC-磁盘配额(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B:服务部署(WindowServer2022) 文章目录 DC-磁盘配额题目配置步骤验证查看DC2驱动器C:\的磁盘配额,限制磁盘空间,警告等级等配置 DC-磁盘配额 题目 在DC2驱动器C:\上…

C#: form 添加窗体最小化事件,添加系统托盘图标,点击后可以打开、最小软件窗口

说明: 1.实现窗体在最小化后触发一个事件,可以去实现需要的功能。 2.最小化后软件图标出现在系统右下角的托盘串口。 3.点击托盘口的图标可以实现软件弹出窗口和最小化的切换。 1.参考办法 以下是判断C#窗体最小化到状态栏的状态的方法:…

机器学习 低代码 ML:PyCaret 的使用

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

Spark SQL的高级用法

一. 快速生成多行的序列 需求:请生成一列数据, 内容为 1 , 2 , 3 , 4 ,5 -- 快速生成多行的序列 -- 方式一 select explode(split("1,2,3,4,5",",")); --方式二 /*序列函数sequence(start,stop,step):生成指定返回的列表数据[start,stop]必须传入,step步…

充电桩项目实战:搞定多数据源!

你好,我是田哥 最近,我在对充电桩项目进行微服务升级中,既然是项目升级,难免会遇到各种各样的问题。比如:分布式事务问题、多数据源问题、分布式锁问题等。 项目技术栈: SpringSpring BootSpring Cloud Ali…

实战教程:使用Spring Boot和Vue.js开发社区团购管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【Docker】了解Docker Desktop桌面应用程序,TA是如何管理和运行Docker容器(1)

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

linux安装mongodb数据库启动报错? 都是冰红茶滴水儿

先展示报错信息 网上一大推说是关闭不正确导致的,然后给出的解决方法是 ./mongod -f mongodb.conf --repair吊用没有,还是报错: about to fork child process, waiting until server is ready for connections. forked process: 302226 ERROR: child process failed, exited…

资深Android逆袭、华为鸿蒙为安卓程序员开辟了一条新道路

本文章主要从以下5个方面来展开聊聊这个话题: 1.什么是鸿蒙 2.鸿蒙系统发展时间线 3.鸿蒙是套壳Android吗? 4.鸿蒙的生态(用户以及开发者) 5.一些建议 1月18日,在鸿蒙生态千帆启航仪式上,华为宣布了继鸿蒙4…

【原创】VMware创建子网,并使用软路由获得访问互联网的能力,并通过静态路由让上层网络访问位于虚拟机的子网

前言 一看标题就很离谱,确实内容也有点复杂,我的初衷是为后面搞软路由做准备,先通过VMware进行可行性验证,确定方案是否可行,再做下一步的计划。结论当然可以的,能通能访问,强的不行。 网络拓…

jdk17新特性—— 密封类(Sealed Classes)

目录 一、密封类(Sealed Classes)的概述1.1、概述1.2、特性1.3、注意事项 二、密封类(Sealed Classes)代码示例2.1、密封类(Sealed Classes)代码结构示例2.2、密封类(Sealed Classes)代码示例 三、密封类(Sealed Classes)接口代码示例3.1、密封类(Sealed Classes)接口代码结构示…