0

シンプルなプラットフォーマーである Godot での私の (最初の) プロジェクトでは、キャラクター スライドが必要でした。キャラクターがスライドするときは、小さな隙間を通り抜けることができるように、1 タイルの高さだけにする必要があります。これ以上の解決策を知らなかったので、ヒットボックスを次のように変更しました。

(また、歩行には別のヒットボックスを使用しました)

enum Shape {
    NORMAL,
    WALK,
    SLIDE
}

func set_shape(name):

    $NormalCShape.disabled = true
    $WalkCShape.disabled = true
    $SlideCShape.disabled = true

    if name == Shape.NORMAL:
         $NormalCShape.disabled = false
    elif name == Shape.WALK: 

        $WalkCShape.disabled = false

    elif name == Shape.SLIDE:

        $SlideCShape.disabled = false

これはあまり良い解決策ではありません。最近、さまざまな重力方向を追加したため、コードがさらに複雑になり、結果として 12 の異なるヒットボックスが作成されました。これを行うためのより良い解決策は見つかりませんでしたが、それが必要だと感じています。

誰でもこれで私を助けることができますか?

4

1 に答える 1

1

最終的には、ヒットボックスのジオメトリを変更する場合 (CollisionShape2D.shape.rect_extents長方形のヒットボックスを使用していると仮定して編集することで実行できます)のように、ソリューションが最も簡単なソリューションになります。エディターで変更する代わりにコードを使用します。

より簡単な解決策: キャラクターが KinematicBody2D を使用していると仮定し、コードを変更して重力が下向きに力を適用するようにし、キャラクター全体を回転させます。この方法では、3 つの異なる CollisionShapes だけが必要です。

于 2019-07-29T19:12:13.570 に答える