【Godot4自学手册】第九节人物碰撞、遮挡关系背景搭建

news/2024/5/18 14:00:10 标签: 网络, godot, 游戏引擎, Godot4, 游戏程序

这一节,我主要学习,人物与场景中的物体发生碰撞,实现对应的遮挡关系,比如:主任公可以与树木的根本碰撞,在上部行走就是树木遮挡人物,在下方行走就是人物遮挡树木。

一、添加碰撞图形

第一步点击TileMap结点,在其检查器中选择TileSet下physical layer中选择添加元素这样就创建一个物理层了,如下图:
请添加图片描述

然后再编辑器中间部分下方切换到TileSet编辑面板窗口,切换到绘制选项卡,在下方的选择属性编辑器选择物理层0,操作如下图:
请添加图片描述

然后面板窗口会变成如下样子。
请添加图片描述

在右侧的图像区域选择需要添加碰撞的图形,就会在碰撞修改的地方显示,这样以后就可以通过上方的快捷按钮调整碰撞形状了,演示效果如下:
请添加图片描述

通过上述方法操作,这个个石头部分就有了碰撞图形,我们的主任公就不能穿过石头了,预览一下,效果如下:
请添加图片描述

这样人物就不能穿过石头了。同理我把边缘的草坪,不同的树木全部加上碰撞图形。

二、调整人物遮挡关系

虽然人物不能穿过物体,但是人物与物体的遮挡关系还存在问题,将通过以下方法调整人物遮挡关系。这个需要再一个场景需要排序的节点打开y_sort_enabled属性。y_sort_enabled 默认为false,如果为 true,则会在绘制 Y 位置最低的子节点之后再绘制 Y 位置较高的子节点。如果为 false,则禁用 Y 排序。Y 排序仅影响继承自 CanvasItem 的子节点。可以将 Y 排序的节点进行嵌套。子级 Y 排序的节点,会与父级在同一空间中进行 Y 排序。此功能可以让你在不更改场景树的情况下,更好地组织场景,或者将场景分为多个场景。说的挺多,做起来很简单。
一是main节点开启y_sort_enabled,操作如下图所示:
请添加图片描述

二是TileMap节点开启y_sort_enabled,操作如下图所示:
请添加图片描述

TileMap设置比较复杂一点,除了设置主节点y_sort_enabled属性,还要设置下面的分层object的y_sort_enabled属性。
三是设置Player节点开启y_sort_enabled,操作如下图所示:
请添加图片描述

这样就完成了,测试一下,如下:
请添加图片描述

三、设置Y轴原点

通过测试,石头和小树没有问题,最后的树木有些问题,遮挡还不符合逻辑关系,需要对月Y排序原点进行调整。一是切换到TileSet,二是绘制选项卡下绘制属性选择Y排序原点,然后单击图片,然后调整YSortOrigin到合适的数值,然后在单击图片,这样Y排序原点就调整好了。注意:YSortOrigin的数值越大,这个Y原点越考下。
请添加图片描述

在测试一下:
请添加图片描述

这样就OK了,这一节就到这了。本节学习了三个知识点,一是给背景图片添加碰撞图形;二是对节点进行Y轴排序;三是调整Y轴原点。下节见,同学们。
需要源代码的同学,请单击下载。


http://www.niftyadmin.cn/n/5356173.html

相关文章

kafka3.0.0学习记录

文章目录 第1章 Kafka 概述1.1 定义1.2 消息队列1.2.1 应用场景 第1章 Kafka 概述 1.1 定义 Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 1.2 消息队…

字符串中的单词反转【leetcode】

本题选自leetcode图解算法数据结构一书 你在与一位习惯从右往左阅读的朋友发消息,他发出的文字顺序都与正常相反但单词内容正确,为了和他顺利交流你决定写一个转换程序,把他所发的消息 message 转换为正常语序。 注意:输入字符串…

SVN Previous operation has not finished; run ‘cleanup‘ if it was interrupted

SVN cleanup出现下面的提示: svn: E155017: Can’t install ‘*’ from pristine store, because no checksum is recorded for this file svn报错:“Previous operation has not finished; run ‘cleanup’ if it was interrupted“ 解决办法  当遇到…

CCF-CSP 202312-1 仓库规划(Java、C++、Python)

文章目录 仓库规划问题描述输入格式输出格式样例输入样例输出子任务 满分代码JavaCPython 仓库规划 问题描述 西西艾弗岛上共有 n n n 个仓库, 依次编号为 1 ⋯ n 1 \cdots n 1⋯n 。每个仓库均有一个 m m m 维向量的位置编码, 用来表示仓库间的物流运转关系。 具体来说,…

Observability:在 Elastic Stack 8.12 中使用 Elastic Agent 性能预设

作者:来自 Elastic Nima Rezainia, Bill Easton 8.12 中 Elastic Agent 性能有了重大改进 最新版本 8.12 标志着 Elastic Agent 和 Beats 调整方面的重大转变。 在此更新中,Elastic 引入了 Performance Presets,旨在简化用户的调整过程并增强…

Flutter 开发3:创建第一个Flutter应用

Step 1: 安装Flutter 1.1 下载Flutter SDK 首先,你需要访问Flutter官方网站下载最新的Flutter SDK。选择适合你操作系统的安装包。 $ cd ~/development $ unzip ~/Downloads/flutter_macos_2.2.3-stable.zip1.2 更新环境变量 接下来,你需要将Flutter…

MavenGradle等引入jSerialComm

引入 jSerialComm [2.0.0,3.0.0) 此版本发布于 Nov 7, 2023 (23年11月) Maven: <dependency><groupId>com.fazecast</groupId><artifactId>jSerialComm</artifactId><version>[2.0.0,3.0.0)</version> </dependency>Ivy: …

B3626 跳跃机器人——洛谷(疑问)

题目描述 地上有一排格子&#xff0c;共 &#xfffd;n 个位置。机器猫站在第一个格子上&#xff0c;需要取第 &#xfffd;n 个格子里的东西。 机器猫当然不愿意自己跑过去&#xff0c;所以机器猫从口袋里掏出了一个机器人&#xff01;这个机器人的行动遵循下面的规则&#…