LoginSignup
0
3

More than 5 years have passed since last update.

[備忘録]2D&3Dスマホゲーム入門 part2

Posted at

クラスを使うと管理に便利。
クラスで使う変数をメンバ変数、クラスで使う関数をメンバ関数と呼ぶ。

「this」→自分自身のクラスが持つ変数を利用するときに使う。thisはつけなくても動作するが、次のようにメンバ変数とお同じ名前のローカル変数を宣言した場合、powerとだけ書くとローカル変数の値が優先的に使われてしまう。そこでメンバ変数を使うときは明示的に[this]をつけておくことでバグを減らすことができる。


private int power = 50;
(省略)
public void Attack(){
    int power = 999;
    Debug.Log(power + "のダメージを与えた");
    //ローカル変数が優先され、999のダメージを与えることになる。
}

Vectorとは?

3Dゲームを作る場合、空間上のどこにOBを置くのか、どちらの方向も移動するのか、どちらに力を加えるかなどを決めるため、float型の「x,y,z」の3つの値を扱う。

そしてこれらをひとまとまりにしたものがVector3クラス
2Dゲーム用にはVector2クラスもある。(x,yのみ)

void Start()
    {
        Vector2 playerPos = new Vector2(3.0f, 4.0f);
        playerPos.x += 8.0f;
        playerPos.y += 5.0f;
        Debug.Log(playerPos);
    }
UnityOfficial
**変数**
magnitude   ベクトルの長さ(読み取り専用)
normalized  magnitude を 1 としたベクトル(読み取り専用)
sqrMagnitude    ベクトルの 2 乗の長さを返します(読み取り専用)
this[int]   [0] や [1] を使用して x や y 成分にアクセスします
x   ベクトルの X 成分
y   ベクトルの Y 成分
Vector2同士の減算。ベクトルの長さを求めている。
 void Start()
    {
        Vector2 startPos = new Vector2(3.0f, 4.0f);
        Vector2 endPos = new Vector2(8.0f, 4.0f);
        Vector2 dir = endPos - startPos;
        Debug.Log(dir);

        float len = dir.magnitude;
        Debug.Log(len);
    }
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3