Unityに関連する記事です

 移動する際にコライダーに引っかかってしまうケースがあるため、そちらの原因の究明と、原因を元に処理の改善を行っていきます。


<実装動画>
動画ファイルへのリンク


 以下の内容で順番に実装を進めていきます。

手順11 ーコライダー接触時のプレイヤーキャラの移動の改善ー

14.滑らかな移動が行えるように改善を行う



 新しい学習内容は、以下の通りです。

 ・Composite Collider 2D コンポーネント



14.滑らかな移動が行えるように改善を行う

1.設計


 フィールドやダンジョンなどの移動は多くのゲームで重要な役割を持ちます。
そのため、なるべくユーザーが遊びやすい状態を考えて設計を行っていく必要があります。

 今回のプレイヤーキャラの移動ですが、タイルに設定したコライダーとの接触判定がぎこちなく、移動する際にひっかかって移動が阻害されることがあります。
これはゲームの状態としても、またユーザーの遊びやすさとしても、双方にとって良い状態ではありませんので、改善を行う必要があります。

 何か1つ実装を行ったらそれで終わり、ではなくて、必ずデバッグを行います
その中で問題点がないか、改善箇所はないかを見極めるスキルを養っていきながら、ゲームをよりよくするためのブラッシュアップを行います。

 今回のケースでは、タイル同士のコライダーのつなぎ目にプレイヤーキャラのコライダーがぶつかって
その部分でひっかかりが生じて、移動できなくなってしまう部分に原因があります。

 Unity には隣り合うコライダーを1つにまとめることができる機能がありますので、そちらを利用して改善を行っていきます。


2.原因の解明と解消方法を検討する −隣接するコライダー同士を連結して処理を軽くするとともに、移動をしやすくするー


 今回の不具合の原因として考えられるのは、タイル同士が隣り合っていてもコライダーは異なるコライダーが1つずつ設定されているため、
この部分にキャラが接触すると引っかかって移動する際に不具合が生じていると思われます。


現在のタイルのコライダー



<検証動画>
動画ファイルへのリンク



3.<Composite Collider 2D コンポーネント>

 
 この現象が原因なのだとすれば、隣り合うタイル同士を連結させることによって解消することができます。
また、連結することにより、コライダーの数が減少するため、処理の負荷も軽減することが出来ます。

 Grid_Collison ゲームオブジェクトの子オブジェクトである Tilemap ゲームオブジェクトを選択し、
インスペクターの一番下にある Add Component を選択します。Composite Collider 2D コンポーネントを探して追加してください。
追加すると自動的に Rigidbody2D コンポーネントも追加されます。
 
 この Composite Collider 2D コンポーネントが、複数のコライダーを連結する機能になります。
なお連結できるコライダーは 2D のみで、Box Collider 2D コンポーネントか、Polygon Collider 2D コンポーネントのいずれかになります。
今回利用している Tilemap Collider 2D コンポーネントの場合、タイルに個々設定されるコライダーは Box Collider 2D コンポーネントであるため、適用範囲になっています。


参考サイト
Unity公式マニュアル
CompositeCollider2D
https://docs.unity3d.com/ja/2019.4/Manual/class-Co...



 設定する項目は2つです。追加した Composite Collider 2D コンポーネント自体には変更はありません。

 最初に、Tilemap Collider 2D コンポーネントの Used By Composite のスイッチにチェックを入れて有効にします。
これで、追加した Composite Collider 2D コンポーネントの機能が有効化されます。


インスペクター画像



 次に、Rigidbody2D コンポーネントの Body Type を Static に変更します。
これでコライダーが連結して作用するようになります。


インスペクター画像



 以上で設定は完了です。



 Sceneビュー でコライダーの形状を確認してください。
タイル1つ1つに設定されていたコライダーが、隣り合うコライダー間で1つの大きなコライダーとして連結されていることが分かります。


<Composite Collider 2D コンポーネント 設定前>



<Composite Collider 2D コンポーネント 設定後>



 以上で設定は完了です。


4.ゲームを実行して動作を確認する


 ゲームを実行してキャラをコライダーのあるタイルにぶつけてみてください。
先ほどとは異なり、コライダーにひっかかることなく、スムースに移動ができるようになっていれば制御成功です。


<実装動画>
動画ファイルへのリンク


 実装の結果を見て、原因として考えていた内容があっていたのか判明します
もしも今回の実装でも同じようにキャラがひっかかってしまうのであれば、それは別の原因ということになるためです。
その場合には検証を進めて、何が原因として考えられるのか、問題点を1つずつ切り分けながら見極めていくことになります。
そういったスキルを身につけるためにも、デバッグを行うことは重要な作業になります。

 以上でこの手順は終了です。

 次は 手順12 −カメラの追従制御の実装− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます