シグナルarea_enteredとarea_shape_enteredの違い

 アクションゲームで、攻撃の検知に、以下のようなArea2D(Hitbox)と子のCollisionShape2D(CS)を用意、使用していました。


Area2Dのシグナルで、敵の攻撃エリアの侵入を検知するのに、2通り使っていました(意識的に使ったわけでなく、混同しており・・・)。

area_enteredと、area_shape_entered、です。

また、攻撃側は、攻撃時のみ攻撃エリアをon、普段はoffするために、攻撃エリアの子のCollisionShape2Dの、disabledのtrue/falseを切り替えていました。

しかし、area_shape_enteredは、攻撃側をoffしても、検知してしまいます。一方、area_enteredは想定通り、攻撃側がoffであれば、検知しませんでした。

area_enteredはareaの侵入を、area_shape_enteredは、shapeの侵入を検知するそうです。そうすると、area_shape_enteredは、shape(CollisionShape2D)を検知するわけですから、CollisionShape2Dをoffにしたのなら、検知しないでほしいわけですが、検知してしまいます。

いずれにしても、この違いを知ったうえで、今後はどちらのシグナルを利用するか、事前に考えたいと思いました。

(area_enteredの方が無難と思います)

コメント

このブログの人気の投稿

プラグイン(godot sqlite)を含めてエクスポートすると、データの更新ができない問題

初心者に良い本は? → 『 ゆるっとはじめるGodot Engine ゲームプログラミング 』

他シーンからシグナルを送る方法