【问题标题】:How do you do pixel perfect Collisions in GODOT ENGINE如何在 GODOT ENGINE 中进行像素完美碰撞
【发布时间】:2021-06-23 00:37:35
【问题描述】:

据我所知,在 Godot 中,您必须手绘多边形碰撞器或使用胶囊等原始形状。我需要对精灵表上的数百帧进行像素完美碰撞。因此,我需要能够将精灵的位掩码作为对撞机形状给出。就像你可以在 pygame 中做的那样。你如何在 GODOT 中做到这一点?

【问题讨论】:

    标签: collision-detection godot pixel-perfect


    【解决方案1】:

    在 Godot 中,您有两个主要的像素完美碰撞选项(两者都不是内置的):

    • 您可以编写一个系统,从您的图像中创建多边形碰撞器。因此,只需在运行时使用多边形碰撞器。
    • 您可以编写一个新的碰撞系统,该系统可以将 aabb 碰撞用于宽相位,将图像数据用于精确相位。

    但是,99% 的时间像素完美碰撞不是必需的,而且效率不高。所以,如果您能告诉我们更多关于为什么要进行像素完美碰撞的信息,那么我们或许可以为您提供更多帮助。

    【讨论】:

    • 一个原因是因为我想要剑对剑的碰撞。想象一下,当您本应继续挥杆,然后击中头部时,与从敌人身上伸出的剑上方的空气相撞对玩家来说是多么令人不解。一般来说,我不想要求每帧的所有姿势都具有一般形状。我正在使用演员-> rotoscope 动画-> 精灵表。因此,我想要大型的偏心戏剧动作,而不是对胶囊或原始框架的角色限制。你能指导我为没有内置的完美碰撞方法编写代码吗?
    • 实际上是否可以只写python代码并在godot中运行?就像我用 pygame 来管理碰撞,用 python 来管理 AI,然后用 Godot 来管理前端和移植哈哈
    • @HaveMercy 虽然在风格上与 Python 相似,但 GDScript 不是基于 Godot,因此,您不能只将 Python 代码运行到 Godot。我没有准备好我提到的两个系统的任何代码,但是如果您搜索一些洪水填充或边界检测算法,您应该能够很容易地编写我提到的第一个系统。您只需要将对撞机数据保存为资源,这在 Godot 中很容易。
    • 好的。我将使用 python 脚本生成一个 Godat 脚本,它将从 pygame 偏移的顶点加载到 godot 中的向量 2 中,用于多边形对撞机数据成员。我会及时向大家发布。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多