タイトル通りUnityでゲームを作りたい。
いや、作りたいではない。作るのだ。
そもそもこのブログもゲーム製作の備忘録目的で作成したわけだしね。
ちなみに目標はカスタマイズ性の高い3Dロボアクションゲーム。
とりあえずUnityの基本的な扱い方を学習するために、こちらのチュートリアルゲームを作成。
https://unity3d.com/jp/learn/tutorials/projects/hajiuni-jp
これだけで当たり判定、オブジェクトの動かしたかた、UIの表示、カメラ操作等の基本的な部分はなんとなんとなく分かるようになる。
そんなわけでチュートリアルを参考にゲームを作っていく。
また、チュートリアルになかった角度の変更も一緒に以下のように実装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* Rigidbodyを動かすとき */ //引数の値で各向きへ力を加える rigidbody.AddForce(movement_speed); //引数の値に各方向への角速度ベクトルを変更する。 rigidbody.angularVelocity = rotation_speed; /* オブジェクトの回転 */ //引数の速度で回転させる this.transform.Rotate(rotate_x,0.0f,0.0f); //引数の角度に回転させる this.transform.localRotation = Quaternion.Euler (90f, 0.0f, 0.0f); |
上記の記載方法以外にも色々とメソッドが用意されている。
Rigidbodyの回転方法は以下のエフアンダーバー様の説明を参考に
http://www.f-sp.com/entry/2017/09/06/181854
Transformでの回転方法は以下のスクリプトリファレンスを参考に
https://docs.unity3d.com/ja/550/ScriptReference/Transform.html
あ、RigidbodyとTransformの違いについてだけども
物理演算を行うオブジェクトはRigidbodyを使用し
物理演算を行わないオブジェクトはTransformのまま
でいいのかな?
なので今回はロボット本体をRigidbodyを付与したオブジェクトにし、
その子オブジェクトとして腕(銃)部分を作成した
ここで重要なのが回転や移動に用意されてるメソッドには
localxxxとxxxといった風に似たような値やメソッドが2つ用意されてたりする。
これらの違いは「親の Transform オブジェクトから見て、相対的かどうかの違い」になっている。
今回、腕(銃)を上下に向きを変える場合は本体の向きを変えずに腕だけを動かしたい。
こういった場合はlocalxxxの値が変わるようにする必要がある。
最初ややこしくて分からなかったし、何なら今もしっかりわかってないと思う。
書いてる内容が間違っていないことを祈る。
あと気をつけないといけないのは引数の型について
特に回転させるとき。
クォータニオンっていう値の4つある角度の表現方法をしたりしてくる。
間違いなく原理をしっかり理解できない。うん。
でも関数の使い方さえわかればゲームはつくれるさ!
以下が参考になりました。
UnityでRotation(Quaternion)をうまく使いたい
http://spi8823.hatenablog.com/entry/2015/05/31/025903
Unity学習帳 クラスを問わず回転操作に関係する関数
とりあえずあとは
・パッドを入力として使う方法
・オブジェクトを生成する方法(弾の発射とか)
・モデルを動作させる方法
を学習していきたい。
とにかくUnityで何ができるのかを覚えなきゃね。
以上です。
コメント