在俯视视角的游戏画面中铺设瓷砖,完成示例:英雄(俯视视角)
为了制作墙壁,我创建了从零开始的“游戏对象”,并在四个方向上包围并放置。
玩家撞到墙壁时会轻微弹回。
撞到左右和下侧的墙壁(游戏对象)时没有问题,
但撞到上方的墙壁时,碰撞后墙壁会粘在玩家身上,
即使在静止状态下也会持续被推动。
我不太清楚原因……
另外还有一点,我为墙壁对象创建了新的组并分配了它,但保存并退出后,再次打开时该组不再显示。
虽然在可视化脚本中已识别,但显示为数字10。

在俯视视角的游戏画面中铺设瓷砖,完成示例:英雄(俯视视角)
为了制作墙壁,我创建了从零开始的“游戏对象”,并在四个方向上包围并放置。
玩家撞到墙壁时会轻微弹回。
撞到左右和下侧的墙壁(游戏对象)时没有问题,
但撞到上方的墙壁时,碰撞后墙壁会粘在玩家身上,
即使在静止状态下也会持续被推动。
我不太清楚原因……
另外还有一点,我为墙壁对象创建了新的组并分配了它,但保存并退出后,再次打开时该组不再显示。
虽然在可视化脚本中已识别,但显示为数字10。

我认为玩家和墙壁对象都需要将运动模式设置为“浮动(Floating)”。"地面(Grounded)"模式专为平台游戏设计,会将碰撞视为地板、墙壁或天花板;而“浮动”模式将所有碰撞视为墙壁,这更符合俯视视角游戏的特性。在地面模式下,顶部的墙壁可能会将下方的玩家视为其地板,并像移动平台一样跟随玩家移动,这或许能解释为何只有顶部墙壁会出现这种情况。对于每个对象,请选择根节点,并在检查器(Inspector)中的 CharacterBody2D 部分将运动模式更改为“浮动”。
关于群组问题,我成功复现了该错误,并已上报,谢谢!在制作器模式(Maker mode)中使用“创建新群组”功能创建的群组,会被保存为该对象上的场景群组,而非全局群组,因此在项目重新加载后,它不会出现在列表中。我想这也是为什么视觉脚本(Visual Script)将其显示为数字的原因。
目前,您可以从高级模式(Advanced mode)中创建它。打开对象,选择根节点,转到检查器旁边的“群组(Groups)”选项卡,点击“+”号,并在命名时勾选“全局(Global)”。之后,它将会出现在制作器模式的“设置群组”列表中,并在重新加载后保留在那里。如果您使用与旧群组完全相同的名称,我认为已经添加到该群组中的对象应该能继续正常工作。以下是操作步骤的视频:
按照文档中的说明进行操作后,问题已经解决。
非常感谢!
配合视频进行的讲解非常清晰易懂!!
虽然主要问题已经解决,但还有一个小疑问:
如果连续撞击墙壁(即游戏对象),墙壁会发生轻微的位移。
不过,我认为正常情况下玩家不会反复撞击墙壁,而且通常墙壁会使用瓦片(tile)来构建,所以这应该是一个罕见的情况。请问这种现象是设计上的预期行为吗?
虽然有点复杂,但既然会发生相互碰撞,出现偏移是正常的设计行为。
那么该如何解决呢?可以通过设置碰撞层/掩码(Collision Layer/Mask)功能,使两者之间不发生碰撞,或者设定为单向碰撞(即一方只能与另一方碰撞),这样就不会再发生偏移了。
请在墙体侧开启“碰撞相互检测”功能,并将脚手架模板指定给墙体侧,这样应该就能解决问题。