どうも最近msiのPCが欲しくてたまらない数学を知らないプログラマーです。

今回は超初心者向けに「Unity」での簡単なスクリプトををやってみようと思います

Unityには「Rigidbody」がありますがその機能は使わずに実装してみようと思います。(*あくまで疑似的なのでよろしくお願いします。)

今回はよくオブジェクトを動かす方法で使われる「Translate」でやってみようと思います。


その1「一定方向に向かってうごかしてみる」

以下↓使用コード


private float Speed = 0.0f; //基準となるスピード private float MaxSpeed = 0.5f; //動くスピードの最大値 private float AddSpeed = 0.01f; //スピードを加える値 private float SubtractionSpeed = 0.98f; //加えるスピード // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.W)) { if (Speed <= MaxSpeed) { Speed += AddSpeed; } } else //「W」が押されていなければスピードを減速させる { if (Speed >= 0) { Speed *= SubtractionSpeed; } } transform.Translate(0.0f, 0.0f, Speed); }

これをうごかすゲームオブジェクトにアタッチしてみてください。
僕の場合はCubeのゲームオブジェクトを作成してそこに作ったスクリプトをアタッチしました。
今回はカメラを動かさないので見やすいようにScene画面の位置を少し工夫させていただきました

上記のコードでは一定の方向にだけですが進むことが確認できるのではないでしょうか?

その2 「TPSのように動かしてみる」

今はまっすぐにしか進めないので回転も少し加えてステージを探索できるようにしてみたいと思います。

以下↓コード


private float Speed = 0.0f; //基準となるスピード private float MaxSpeed = 0.5f; //動くスピードの最大値 private float AddSpeed = 0.01f; //スピードを加える値 private float SubtractionSpeed = 0.98f; //加えるスピード private float RotateForce = 0.8f; //回転させる値 // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.A)) //左に回転させる { transform.Rotate(0, -RotateForce, 0); } else if (Input.GetKey(KeyCode.D)) //右に回転させる { transform.Rotate(0, RotateForce, 0); } if (Input.GetKey(KeyCode.W)) { if (Speed <= MaxSpeed) { Speed += AddSpeed; } } else //「W」が押されていなければスピードを減速させる { if (Speed >= 0) { Speed *= SubtractionSpeed; } } transform.Translate(0.0f, 0.0f, Speed); }

新しくスクリプトを作り、アタッチして実行してみてください。

以上が今回ご紹介させていただいたものです。

ごくごく初心者向けの物ですが参考になっていただけたら幸いです。ではまた………