こんにちは!新入社員のタケです!
今日も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);
の一行でその家具を消去します。
…
キー入力もばっちりできて、より自由に家具をレイアウトできるようになりましたね!
もちろんボタンを押して一度だけ実行させることもできますが、それはまた複雑なので次の記事で!
コメント
コメントを投稿