投稿

7月, 2025の投稿を表示しています

TileMapLayer)collision(衝突エリア)の可視化

イメージ
 キャラクターやオブジェクトに使用する物のcollision area(衝突エリア)は、godotのエディタ上で、薄い青色で確認することができます。 ・以下のように、どこがエリアか確認できる しかし、TileMapLayerはデフォルトでは衝突エリアを見ることができず、衝突の設定がシーン内で実際どのようになっているか、確認しづらいです。 以下のように、デバッグ→コリジョン形状を表示、にチェックを入れると、テストプレイで確認できますが、エディタで設定・編集しているときに、すぐに確認がしたいです。 ・テストプレイで衝突エリアを可視化(以下コリジョン形状を表示、にチェックを入れる) 今日気づいたのですが、エディタ上ですぐに確認するには、TileMapLayerのインスペクターの、collision visible、をfource show、にすると、以下のように見ることができます。 ただ、テストプレイの際にも表示されてしまうようになるので、邪魔になった場合は元の、defaultに戻します。 ・以下のように、collision visibleをforce show、に設定すると・・・ ・以下のように、エディタ上で、海や森に設定した衝突エリアが、青く表示される

シグナル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の方が無難と思います)

FreeCadを使ったレベル設計

イメージ
 レベル(ゲーム中の道路や街のようなステージ)を作る際、これまでは大まかな絵をノートに書いて、それを元に、godotでタイルを配置、作っていました。 しかし、絵だけでは、どの程度のサイズの物にするか、が十分に決まりきっておらず、迷いながら、なんども作りなおすことが多かったです。 そこで、以下フリーのCAD(FreeCad)を使って、2次元ですが、大きさを確定した設計をしてみました。 https://www.freecad.org/index.php?lang=ja 方眼紙のような背景があるので、一区画を1タイルとみなし、作ってみました。 これを元にタイルを配置すれば、少なくともサイズと配置について悩むことは無さそうです。 一方、建築物の内部はどのようなインテリアにするか、外観はどのような物か、敵は何を何体、どこに配置するか、タイルはどのような種類の物を作るか?等は決まっておらず、そういったことも事前に決めれば、より作業しやすくなりそうです。