いのいち勉強日記

Turingで自動運転の開発をしています。京大でPhDをとりました。Kaggle Grandmasterです。

【Unity】シューティングゲームを作ってみよう!《Day 6》入力を受けてGameObjectを動かす!

6日目は「入力を受けてGameObjectを動かす!」を実装します。

 

 

ゲーム作り6日目

 

6日目はBulletを飛ばす大砲を

左右に動かせるようにします!

 

ボタンオブジェクトの配置

 

まずはボタンオブジェクトの配置です!

いい感じのところにボタンを配置して、

Spriteは丸いやつにして、

Textを「<」と変更してボタンっぽくしました!

f:id:sys-bio:20180331091956p:plain

 

 

GameObjectを動かす!

 

GameObjectを動かすための関数を作ります!

 

大砲のローカルポジションを取得して、

右なら+、左ならーの値をxのポジションに加えて

大砲のローカルポジションを更新する。

というのを実装しました!

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

if (cannon.transform.localPosition.x + 60.0f < 300.0f){
                Vector3 newCannonPos = new Vector3 (
                    cannon.transform.localPosition.x + 60.0f,
                    cannon.transform.localPosition.y,
                    cannon.transform.localPosition.z);
                cannon.transform.localPosition = newCannonPos;
            }

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

右に移動させるコードはこんな感じです!

右端を300に設定しておくことで画面からはみ出ないようにしました!

 

先ほど配置したボタンに大砲を動かす関数を結びつけて完成です!

 

キーボードの入力を受け付ける!

 

これまではスマホでもやることを想定して、

Bulletの発射や大砲の移動はボタンを押したら動けるようにしていました。

 

しかし、Unity上でのシミュレーションや、

WebGLでアップすることを考えると

キーボードで入力できる方がやりやすい!

ということでキーボードからの入力をできるようにしました!

 

キーボードから入力を得るのは簡単です!

 

まずInput.GetKeyで入力を得るのですが、

それには3種類あります。

  • GetKey
    キーを押している間ずっとTrue
  • GetKeyDown
    キーを押した瞬間True
  • GetKeyUp
    キーを話した瞬間True

 

そして、どのKeyを押したかを判断するために、

KeyCodeを設定します!

 

KeyCodeの一覧はUnityのリファレンスにあるので

それを参照すればすぐにほしいKeyの入力を得られます!

 

docs.unity3d.com

 

たとえば、「R」のボタンを押したら

Bulletが発射されるようにしたかったので

コードは以下のようになりました!

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

if (Input.GetKeyDown (KeyCode.R)) {
            ButtonRed ();
        }

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

すごく簡単に実装できたので

スマホ用のゲームの時もシミュレーションのために

キー入力を作っとくのは大事だと実感しました!

ちなみに、いたのくまんぼう先生の本でもそのようにされていました!

 

まとめ

 

今回はGameObjectの大砲を動かせるようにしました!

動かし方はいろんな実装方法があるとおもいますので、

AddForceやVelocityをつかって

また別の方法で違った動きも実装してみたいなと思います!

 

 そして、

「キー入力は実装が簡単だな!」

と感動しました!!!

とりあえずゲームを作ってみるとかの時は

キー入力で作ってみたら簡単なテストとかできる気がします!

 

本日も最後まで読んでいただきありがとうございました!

 

明日はコインが当たったらポイントが入るというのを実装します!