Unity 5 2D 3日目 ゲーム制作 2015年07月21日 放送後にすぐ寝てしまい、その後体調を崩し気味で更新が遅れてしまいました! 今日書くのは16日の放送分の内容です! リスナーさんから補助をいただき、動作するのに必要なコードを頂きました! また、自分なりにコードを読み解いていき得た知識ですが、オブジェクトに対して物理挙動を与えるためには、Rigidbody2Dクラスが必要なようです。 ですが、このRigidbody2Dクラス・・・・Unity4まではtransformのように、デフォルトで対象のオブジェクトのインスタンスを持っていたようなのですが、5からはデフォルトでインスタンスを持たないようなのです!!!なぜかは・・・分かりません。。。本当に物理挙動を与える対象にしかインスタンスを持たせないことでメモリの節約とかが目的なんですかね??かじった程度の知識でJava屋なので全く的はずれな知識な気がしますが。 上記の理由でRigidbody2Dを取得するためには、GetComponentメソッドでエイリアスにRigidbody2Dを指定することで取得することができます。 例 Rigidbody2D rigidbody2D = GetComponent<Rigidbody2D>(); なので、Rigidbody2Dを使用する場合は、一旦クラスの最上位でオブジェクトを宣言してスコープを広く取り、その後、StartメソッドなどでGetComponentメソッドでインスタンス化するのがいいかと思われます。 そして、取得したRigidbody2Dオブジェクトのvelocityフィールド・・・変数?(C#での言い方がわからん!!)に対応したキーの値を足してあげれば速度が付与されるので、スピードがどんどん上がっていきます。ただ、velocityに値を足しているので、初速度はかなり低く、慣性を強烈に感じます。慣性に関しては好みですが、感じさせたくない場合は、Vector2型に対応する座標を入れてあげて、それをRigidbody2Dオブジェクトのpositionに代入すれば大丈夫かと思います・・・・(未検証) 3日間かかってやっと動きましたね!!それでは、次回は弾を打てるようにできればいいかなと思います。(もしくは、移動中の画像を旋回している奴に変更できればしたいですね!) PR