【问题标题】:Godot: how to implement 2d fixed joint?Godot:如何实现二维固定关节?
【发布时间】:2019-09-19 17:13:01
【问题描述】:

所以,我从 Godot 开始,依靠物理引擎(基于 RigidBody2D)进行 2d 自上而下的宇宙飞船游戏。部分想法是航天器是模块化的 - 即部件可以以不同的方式组装以创造不同的飞行器。它仍处于早期阶段,但我目前正在研究的是如何最好地连接这些不同的部分。早些时候我实现了一个旋转大炮并使用 Joint2D 将其连接到船上,效果很好,但对于非旋转部件,Godot 没有这样的“固定”关节。到目前为止,我看到的唯一一种固定接头的方法是两个销接头,它们之间有一定的距离。 (是的,工程背景)。

但是,我看到了一些问题:(1)当我创建更多更大的工艺时,许多关节可能会增加额外的计算负载(我想要它做的只是像一个单一的刚体一样) ,(2)实际组装零件需要更多的工作(最终我希望添加一个船舶编辑器,并以编程方式附加零件 - 我确实意识到这一点很容易解决),(3)我要运行以后会遇到复杂构建的问题吗?以及 (4) 物理引擎将如何处理这些类型的组件?

将不移动的船部件添加为同一个刚体的一部分而不是单独的部件会更好吗?但是,如果我这样做了,诸如丢失模块、为每个部分设置单独的生命值等事情最终会变得更加困难吗?

我不确定我是否要执行最后一部分,但是半刚性(即柔性)关节呢?换句话说,一个灵活的宇宙飞船? (游戏概念的早期版本是从头开始使用真实的物理 - 包括各种材料失效模式 - 但软体很困难,所以我不会去那里......至少在可预见的未来不会!)

【问题讨论】:

    标签: 2d game-physics rigid-bodies godot


    【解决方案1】:

    Godot 中不需要固定关节。您可以在 RigidBody2D 下添加多个碰撞形状。

    因此,在 RigidBody2D 节点下添加所有碰撞形状(以及任何其他精灵),它们将一起作为一个实体对象。

    【讨论】:

    • 谢谢,但是如果这些物品分别受到伤害并因此被单独销毁(并因此从“树”中移除),这将如何工作?那会奏效吗?游戏的整体理念是各部分的独立行动很重要。
    • 是的。您可以使用 RigidBody2D 的body_shape_entered 信号来检测它的哪些部分受到了伤害(请参阅local_shape 参数),然后删除任何受到过多伤害的部分的精灵和碰撞形状。
    • 我明白你在说什么,我同意在许多情况下这可能是正确的解决方案。同时,引擎不应该受到如此严格的限制。还有其他需要固定关节的情况
    • @MarcJames 如果您还有其他需要固定接头的情况,请将它们作为单独的问题发布。我的帖子回答了原始发帖人的问题。对此投反对票是荒谬的,因为它不能解决您遇到的其他问题,但它为原始问题提供了一个非常有效、可行的解决方案。
    • @MarcJames 请将您的“其他案例”作为单独的问题发布,以便人们可以在您认为需要固定关节的情况下为您提供解决方案,或者在确实存在以下情况时向您学习需要一个固定的关节。 Godot 的范式与您可能熟悉的其他引擎完全不同;在 RigidBody2D 下添加多个碰撞形状相当于固定关节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2017-11-09
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多