同時にぶつかる。
こんにちは。
トラップやギミックを実装しようと思っていたところ、衝突の検知の部分で少し詰まってしまいました。
GODOTではあるオブジェクトが他のオブジェクトを検知する方法として「ボディ系」「エリア」そして「キャスト系」の3つのノードを使うことが普通です。
この中でボディ系のノードは移動と衝突を同時に実行する便利な関数があります。
当初この関数を使って衝突したオブジェクトを検知させようとしましたが、ボディ系のノードをつかった場合、同時に複数のオブジェクトにぶつかった時に問題を感じたのです。
問題といってもエンジンの仕様なので実際には問題ではないのですが、ボディ系では複数のものに同時にぶつかったように見えても実際にはボディの動きを止めたオブジェクトだけを取得するのです。
上の動画ではジャンプした時に白い四角にづつきをしています。
後半では同時に2つの四角に対してづつきができているのがわかるでしょうか。
ボディ系のノードの関数で実行した場合には同じようなことをしてもどちらか一方しか反応しません。しかもどちらが反応するのかランダムのようです。
このようなことから面倒ではありますが方法を変える必要が出てきました。そこで使ったノードがキャスト系のノードです。
このノードは移動の関数を持たない代わりに衝突に関して言えば専門のノードです。移動と同時にこのキャスト系のノードで衝突を求めれば、複数のオブジェクトを同時に取得できました。結果は動画の通りです。
うまくいかないコードを作り直すのは疲れますね。
以上、おしまい。