Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ オブジェクトとのプレイヤーの相互作用 | プレイヤー挙動
/
Unityでの格闘ゲーム

bookオブジェクトとのプレイヤーの相互作用

メニューを表示するにはスワイプしてください

インターフェース

インターフェースは、クラスが実装しなければならないメソッドやプロパティのセットを定義する契約のようなもの。実装の詳細を提供せずに、クラスが持つべき機能を指定することができる。

Unityでゲームを作成していて、剣や銃、弓などさまざまな種類の武器を作りたいとする。IWeaponというインターフェースを作成し、すべての武器が実行できるべき基本的なアクション(Attack()Reload()など)を定義することができる。

これで、ゲーム内で武器と見なされるクラスはすべて、このインターフェースを実装する必要がある。たとえば、SwordクラスやGunクラスなどが考えられる。

インターフェースを使用することで、すべての武器に共通の基本機能(Attack()Reload())を持たせつつ、それぞれ独自の実装を行うことができます。これにより、コードのモジュール性が高まり、ゲームが複雑になるにつれて管理しやすくなります。

これは、敵を攻撃可能なオブジェクトとしてマークするためにゲーム内で使用したインターフェースです。

public interface IGetAttacked
{
    public void GetAttacked(int damage);
}

TryGetComponent

if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
    getAttacked.GetAttacked(damage);
    attackEffect.transform.position = rayCastHit.point;
    attackEffect.Play();
    isAttacking = false;
}

主なポイント

  • raycastHit: Unityでレイキャストを行った際のヒット結果を指す。レイを飛ばすことで、どのオブジェクトに当たったかの情報を取得できる。
  • .TryGetComponent(out IGetAttacked getAttacked): このメソッドは、GameObjectのtransformから特定のコンポーネントを取得しようとする。outキーワードは、取得したコンポーネントを変数getAttackedに代入するために使われる。取得できなかった場合は、if文以下の処理は無視される。
  • IGetAttacked: コードがGameObjectから取得しようとしているインターフェース型。GameObjectIGetAttackedインターフェースを実装したコンポーネントが必要であることを示す。

レイキャストによってヒットした GameObjectIGetAttacked インターフェースを実装したコンポーネントがある場合、この行の実行後に getAttacked 変数はそのコンポーネントへの参照を保持します。そうでない場合、getAttacked には null が代入されます。

question mark

Unity における TryGetComponent メソッドの目的は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  5
some-alt