シグナル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の方が無難と思います)
コメント
コメントを投稿