【Unity】マウスクリックでもキー操作でも家具を操作できるようにしてみた!

 こんにちは!新入社員のタケです!


今日もIt's My Houseの内観バージョン、プログラミングを駆使してどんどん作っていきますよ~!


今回はクリックだけではなく、キー操作でもある程度動かせるようにしていきました。

画面上のボタンをポチポチやっていくだけでも良いのですが、もっと便利にしたり微調整したかったので実装していきます。


キー入力を実装するのはとても簡単です!

作ってみたものがこちら!


このコードはUpdate()関数という部分に書かれています。

Update関数は特殊で、中にコードを書くと1フレームごとに実行してくれます。

まずは一番上からコードを見ていきましょう!


if (Selected == true)

と書いてあるので、SelectedがTrue家具が選択されている状態)じゃないと実行されませんね。


続けてさらにIf文があります。


if (Input.GetKey(KeyCode.A))

{

this.transform.Translate(0.01f, 0.0f, 0.0f);

}


これはキーボードのAキーが押されたら(最初のカメラ位置から見て)左に座標を0.01移動するというプログラムです。

if文の条件である

Input.GetKey(KeyCode.A)

の部分でキーボード入力を取得しています。


this.transform.Translate(0.01f, 0.0f, 0.0f);

の一行で実際に0.01左に移動させるというプログラムになっています。

Translateの()の中にはそれぞれ(x軸, y軸, z軸)という風に対応しているので、このコードはx軸に0.01ずつ値を追加していくよ~というコードになります。


これがUpdate関数に入っていると、1フレームずつ処理が行われるので

1フレーム目にAが押された!0.01移動!…

2フレーム目にも押されている!0.01移動!…

3フレーム目でも…

という風に処理されていくのでAキーを押している間ずっと左に0.01ずつ移動していく…ということになるわけですね!


WSADキーでそれぞれ前・後・左・右に家具を移動させたいので、同じようにWSDキーにも移動するプログラムを割り当てます。


これができたら回転も作っていきましょう!

Qキーで左回転、Eキーで右回転します。


transform.Rotate(new Vector3(0, 0.5f, 0));

の一行でy軸0.5ずつ回転します

マイナスを付けると逆回転になるので簡単ですね!


最後に家具の削除もDeleteキーでできたら便利なので、Deleteキーを押されたらその家具が消える!という処理も作りました。

Destroy(this.gameObject);

の一行でその家具を消去します



キー入力もばっちりできて、より自由に家具をレイアウトできるようになりましたね!

もちろんボタンを押して一度だけ実行させることもできますが、それはまた複雑なので次の記事で!


--------------------------------------------------------------------------------

シェルパでは、3DCGや建築パースはもちろん
VRやARアプリの開発も行っています!
新しいことに興味のある方はきっと楽しめると思います!
新人研修も充実していて初心者でも3DCG経験者でも安心!

株式会社シェルパ
【福岡本社】
〒810-0042 福岡県福岡市中央区赤坂1丁目13-10赤坂有楽ビル7F 
【東京オフィス】
 〒101-0041 東京都千代田区神田須田町2丁目13-1YKS黒田ビル5F
TEL 092-717-6800 / FAX 092-717-6801

--------------------------------------------------------------------------------

コメント