1

godot にタイルマップがありますが、すべてのタイルが障害物であり、衝突を引き起こします。タイルのないセルのみが歩行可能です。Navigation2D ノードを介してナビゲーションを追加しようとしています。私が見る限り、「すべてが歩きやすいが、これらのタイルがある場所ではない」と言う方法はありません(「タイルのこの部分は歩きやすい」としか言えませんが、現在のセットアップではタイルはありません歩けるスペース)。

回避策として、タイルのないすべてのセルを次のコードで完全に歩ける「ダミー タイル」に設定しようとしました。

func _ready():
    for x in size.x:
        for y in size.y:
            var cell = get_cell(x, y)
            if cell == -1:
                set_cell(x, y, WALKABLE)

ただし、Navigation2D ノードはこれらのタイルを認識しません。WALKABLEタイルを手動で配置すると、すべてが期待どおりに機能します。

この問題が発生している可能性があり、電話する必要があると思いますupdate_dirty_quadrants()が、問題は解決しません。

バージョン 3.0.6stable、3.1Alpha2、および最近のコミット 9a8569d ( godotwild提供) でこれを試しましたが、結果は常に同じでした。

すべてのタイルを事前に手動で配置せずに、タイルマップを使用してナビゲーションを取得する方法はありますか?

4

2 に答える 2

1

オートタイラーでタイルの ID を見つけることができませんでした (タイルマップを選択してエディターでチェックインすると、これらはすべて同じ imagename.png 0 を示します)。そのため、ID を使用する代わりに、タイルセット内の歩行可能な空白タイルの座標を使用しました。コードは LukeZaz' と同じままですが、set_cell が次のように置き換えられています。

set_cell(x, y, 0, false, false, false, Vector2(7,4)); ここで、Vector2(7,4) は、ナビゲーション ポリゴンを持つタイルセット内の空白のタイルの座標です。(座標は 0 から始まることに注意してください)

(Godot 3.2.3.stable)

于 2021-02-18T11:42:21.297 に答える