Unity の基本概念

👾 Unity Documentation

https://docs.unity3d.com/ja/current/Manual/index.html

🚔 衝突

Collider

コライダー(Collider) は、GameObjectに物理的な接触接触判定を発生させるコンポーネント

【原義】

Collider(高エネルギーに加速したニつの粒子線を正面衝突させ反応を研究する加速器。衝突型加速器

Collision(衝突)

Rigidbody2D

GameObjectを物理法則に従って動かすようにするコンポーネントhttps://docs.unity3d.com/Manual/class-Rigidbody2D.html

GetComponent

「GetComponent」は、Unityにおいて特定のコンポーネントをオブジェクトから取得するためのメソッドです。このメソッドを使うことで、オブジェクトにアタッチされた特定のコンポーネントインスタンスを取得することができます。

詳細はこちら

Vector3

3D ベクトルと位置の表現。この構造体は Unity 全体の 3D での位置や方向のために使用される。一般的なベクトル演算を行うための関数が含まれている。

以下は、カメラオブジェクトにシリアライズ化したGameObjectを紐づけて、GameObjectの位置をuploadの度にカメラの位置に代入しているスクリプトの例。

public class FollowCamera : MonoBehaviour
{
    [SerializeField] GameObject thingToFollow;
    // Inspectorから操作可能にするためにシリアライズ化。Inspector上でカメラとCrazyMcDriveを紐付ける
    
    void LateUpdate()
    {
        transform.position = thingToFollow.transform.position + new Vector3(0, 0, -10);
        // カメラの位置のVector3を作る
    }
}

OnCollisionEnter2D

Colliderの「Is Trigger」がオフの時、何かが接触したら呼ばれるメソッド

void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Enemy")
        {
            collision.gameObject.SendMessage("ApplyDamage", 10);
        }
    }

OnTriggerEnter2D

何かがColliderに接触した時に呼ばれるメソッド

  • other

    衝突した相手(=自分自身以外)のオブジェクトを参照するために使用するプロパティ。または、オブジェクト同士の関係性を表現するために使われる言葉。 以下のvoid OnTriggerEnter2D(Collider2D other) { … }では、以下のような解釈が行われている。 「何かが(自分にアタッチしている)コライダーに接触した時に処理を行います。値は何も返しません。 『何か』はcollider 2D の other(衝突した相手のオブジェクト)です。 other(衝突した相手のオブジェクト)のtagが”Package”であることがtrueなら、 other(衝突した相手のオブジェクト)のgameObject(=要素)をdestoryDelay時間でDestroyします」

      public class Delivery : MonoBehaviour
      {
          // OnTtiggerEnter2D
          void OnTriggerEnter2D(Collider2D other)
          {
              //Debug.Log("What's That?");
              if(other.tag == "Package")
              {
                  Debug.Log("Package picked up");
                  hasPackage = true;
                  Destroy(other.gameObject, destoryDelay);
              }
    
              if(other.tag == "Customer" && hasPackage)
              {
                  Debug.Log("Package Delivered");
                  hasPackage = false;
              }
          }
      }
    

Destory(GameObject型のオブジェクト, float型の時間)

オブジェクトを削除するために使用される(Unity API)メソッド。このオブジェクトを呼び出すことによって、指定したオブジェクトを削除することができる。

🧾 スクリプト

[SerializeField]

[SerializeField] は、そのフィールドがシリアライズ可能であることを表す属性。 ここで重要な理解は、シリアライズ可能なフィールドはInspectorから操作が可能になる、という点。

スクリーンショット 2023-05-04 16.58.35.png

🐶 基本

シーン(Scene)

ゲームの画面1つを表します。ゲームではメインのゲーム画面の他に、タイトル画面やスコア画面など、いろいろな画面を使います。それぞれの画面はこのシーンという単位で保存されます。

ゲームオブジェクト(GameObject)

シーンの中にあるもの全て。オブジェクトはゲーム内の「要素」を表し、座標や親子関係を持つ。また、オブジェクトには、複数のコンポーネントがアタッチ可能。

https://docs.unity3d.com/Manual/GameObjects.html

コンポーネント(Component)

オブジェクトに機能を追加するためのもの。スクリプトやアニメーション、カメラやコライダー(Collider)などが含まれる。 いろいろなコンポーネントをくっつけることで、 GameObjectの見た目や働き方が変わっていく。

アタッチ

シーンに追加した GameObjectにコンポーネントをつけて機能を追加する操作のこと。

アセット(Asset)

ゲームを作る素材のこと。

メソッド

「何かの値を受け取って作業(処理)を行い、結果を値として返す」という働きをする。関数やファンクションとも呼ばれる。

f

float(32bit浮動小数点数)のf。Unityでは、「0.01f」というように、32bit浮動小数点数を表現するときに使う。

0.01 //コンパイルエラーになる
0.01f //正解。32bit浮動小数点数を表現する場合、C#ではこう書く