ここではヴィジュアルスクリプトで問題がおきた際のデバッグ方法について解説します。
メッセージを出力(PrintMessageToConsole)アクションを使いこなそう。
メッセージを出力はデバッグ専用のアクションです。
このアクションが実行されると、下部パネルの出力(Output)に任意のメッセージを出力できます。
問題が起きているステートにこのアクションを設定して、到達できているのかをチェックしましょう。
- メッセージが出力されない場合
ステートに到達できていない=このステートへの遷移リンクに問題があります。 - メッセージが出力される場合
ステートには到達できているので、実行アクションか、攻撃判定当たり判定等のノード設定に問題があります。
当たり判定を表示しよう。
デバッグメニューでコリジョンを表示(Visible Collision Shapes)にチェックをいれることで、当たり判定が可視化されます。あたっているはずなのに動かない、衝突をすり抜ける等の衝突周りの問題はこれをオンにしてチェックしましょう。
原因の特定に役立つアクション: テキストを表示(DisplayText)
テキストを表示アクションでは、変数を表示することができます。持続時間を無制限にしておけば、ステートが変わってもずっと表示されますのでデバッグにも有用です。
攻撃があたっているはずなのにダメージがでないなあ、といった時にはHPの変数を可視化してチェックしましょう。
間違えやすい設定項目: CollisionLayerとCollisionMask
当たっているはずなのに判定がうまくいかずにリンクしないぞ?というときはCollisionLayerとCollisionMaskをチェックしてみてください。
壁判定との接触: Collision2D同士の接触を検知します。自身のCollisionMaskが、接触対象のオブジェクトCollisionLayerと一致しているか確認してください。
攻撃判定との接触: 自身の HitCollisionと、接触対象のオブジェクトの AttackCollision同士での接触を検知します。自身のHitArea2Dのマスクと対象のAttackArea2Dのレイヤーが一致しているか確認をしてください。
当たり判定との接触: 自身の AttacCollisionと対象となったオブジェクトの HitCollision同士での接触を検知します。自身のAttackArea2Dのマスクと対象のHitArea2Dのレイヤーが一致しているか確認をしてください。
CollisionShapeとCollisionMaskについて詳しくは以下を設定してください。