Day 5 - C# in Unity
大分更新に間が空きましたが、体調不良でダウンしていました。 回復したので、更新再開です。 C# in Unity スペースシューターを作り、ゲームオブジェクトに対してスクリプトをコンポーネントとして組み込んできました。 例えば、マウスやキーボードの入力に対して反応するようにするものだったり、繰り返しの処理をしたりするものを使ったのを覚えています。 ありがたいことに、スクリプトに関してのチュートリアルなんてものがUnityにはあります。 ↓ https://unity3d.com/jp/learn/tutorials/s/scripting ...
大分更新に間が空きましたが、体調不良でダウンしていました。 回復したので、更新再開です。
C# in Unity
スペースシューターを作り、ゲームオブジェクトに対してスクリプトをコンポーネントとして組み込んできました。 例えば、マウスやキーボードの入力に対して反応するようにするものだったり、繰り返しの処理をしたりするものを使ったのを覚えています。
ありがたいことに、スクリプトに関してのチュートリアルなんてものがUnityにはあります。 ↓ https://unity3d.com/jp/learn/tutorials/s/scripting
こちらを順に読んでいきましょう。 GetKeyが先に出てきて解説は後の項目で何食わぬ顔で出てきたりしますがそこはもう気にしないで行きます。
最初の方は本当に基本中の基本ですね、スクリプトの組み込み方や変数の定義など。 とはいえ僕はintやらfloatやらの型の違いすら理解出来ていないんですが…
http://qiita.com/tanaka_lit/items/3629ae1fa47eba9a38d7 と、そこでUnity 変数 型で検索したら出てきたこのページ、わかりやすい。
他にもメソッドの事についてや、やってしまいやすいミスなどについて書いてくれています。 if文で条件に x = 1 とか、結構やっちゃいますね僕。 こうやって理解すると、何代入してんだ!ってツッコミを入れることも出来ますね。
さて、そして今までゲームを作る際に書いてきた GetKeyDown、GetAxis、OnTriggerなどなど… こいつらに関してより深く理解をするとしましょう。
GetKeyDown
読んで字の如くのようです。 指定されたキーを押すと用意された動作をする。 リスタート処理などがそれに当てはまりますね
if (Input.GetKeyDown (KeyCode.R)) { Application.LoadLevel (Application.loadedLevel); }
Rボタンを押したら最初の画面を読み込むよ、というスクリプトになっています。 とある有名なコマンドを入力すると自爆したり、そんなのもこのGetKeyDownで実現出来るんですかね。
GetAxis。
これつまりコントローラーの十字キーのような役割をもたせることが出来るってことなのか。 この1と-1という入力で移動という処理にしているという感じですね、便利だ。
OnTrigger
こいつが一番知りたいところなんです。 このOnTriggerを使った処理をするとき、ゲーブオブジェクトのcollider(衝突者)コンポーネントの設定の中にある Is Trigger というチェックマークを付けたら衝突判定が起きるのか、起きないのかが実はよく分かっていない 今まで2つの物体(機体と障害物)の判定しかしたことがないので、付ける付けないの4通りの方法を試してうまく行った方で行くとかいうやり方をしてました。
今後衝突するものが増えていった場合絶対詰まってしまうので真に理解しなくては
トリガーにすると、Rigidbody の衝突判定を行わなくなります。ですが、Rigidbody がトリガーの範囲内に「入り」、「出る」ときにコールバックとして OnTriggerEnter、OnTriggerExit、OnTriggerStay が呼び出されます。
IsTriggerを入れるとOnTriggerEnterやExitが反応するようになると。 Rigidbodyの衝突判定を行わなくなるってことは、物理判定をすり抜けてしまうけどすり抜けた瞬間判定が起こり処理がされる。
スペースシューターでは、弾がIsTriggerオフで、障害物がIsTriggerオン。弾が触れた瞬間に障害物は破裂する、という処理でした。 なるほど…衝突判定をなくしてすり抜けるようにしてOnTriggerを反応させるようにすることが出来ると IsTriggerが入ってなければOnTriggerも反応出来ないと、やっと理解出来た…
Todays result
適当にやったら動くってのは結構あるものなんですが、やっぱりきちんと理解したほうが気持ちいいですね この感覚は忘れないようにします。 ちなみに今、スクリプトを調べているのに並行してゲーム制作チュートリアル3を進めています。 明日はそのゲーム制作について書こうと思います。 今日はこれまで。