初めてのオリジナルゲーム「ダンジョン脱出」①
まずはフィールドを。
Planeで床を作りました。
4×5マスの、ごく小さなフィールドです。
そして、人に見立てたCylinderをこの世界に降り立たせました。
このCylinderは自分自身なので「Me」と名付けました。
さて、このMe君に物理属性を与えます。
といってもよくわからないので、前回のボールゲームで作ったラケットととりあえず同じように作ります。フィールド上を、プレイヤーが入力したキーによって動くのは大差ないと思ったからです。動きが変だったら、あとで調整です。
というわけで、こんな感じの値にしました。
さてお次はスクリプトです。
public class Me : MonoBehaviour { private float accel = 1000.0f; // Use this for initialization void Start () { } // Update is called once per frame void Update () { this.GetComponent<Rigidbody>().AddForce( transform.right * Input.GetAxisRaw("Horizontal") * accel, ForceMode.Impulse); } }
ラケットと全く同じです。
とりあえずこれで動かしてみましょう。
うん。
ラケットの時は何とも思わなかったですが、人だと思うと動きが早すぎです。キレッキレです。あと、左右には動きますが、前後には動きません。そりゃそうだ、ラケットはそういう設定でした。
動きをどう変更したいかというと、
・矢印キーを入れた時のスピードを遅くする
・前後(z方向)にも動かしたい
・できればドラクエのように1マスずつ動いてほしい
こんな感じです。
まず、前後の動きの実現です。
ググりまくって、こんな感じにしました。
public class Me : MonoBehaviour { private float accel = 20000.0f; // Use this for initialization void Start () { } // Update is called once per frame void Update () { float x = Input.GetAxis("Horizontal") * accel; float z = Input.GetAxis("Vertical") * accel; GetComponent<Rigidbody>().AddForce(x, 0, z); } }
すると、前後にも動き始めました!
数字もちょこっと変えてあります。