今回はテトリスの作り方-3ということで、少し前回のおさらいをすると、ステージの作成などの環境設定などを前回は行いました。
今回から実際にスクリプトを書いてminoを動かして行きます。
わかりずらいところがあれば、コメントで教えていただければ嬉しいです。
Tminoにスクリプトをアタッチする
下の画像1の手順で進めます。
①PrefabファイルからTminoをシーン上に移動させる
※場所はBackgroundの枠内であればOKです
② Add Componentボタンをクリック、New scriptをクリックして、Tminoに新しいスクリプトをアタッチします
そうするとTminoにMinoスクリプトがアタッチされていることを確認して、Minoスクリプトを開きます。
①TminoにMinoスクリプトがアタッチされていることを確認する
②MinoをダブルクリックしてMinoスクリプトを表示させる
※設定がデフォルトのままな方はVisual Studioが起動すると思います
Minoを左右に動かすScript
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Mino : MonoBehaviour { // public float previousTime; // minoが落ちるタイム public float fallTime = 1f; void Update() { MinoMovememt(); } private void MinoMovememt() { // 左矢印キーで左に動く if (Input.GetKeyDown(KeyCode.LeftArrow)) { transform.position += new Vector3(-1, 0, 0); } // 右矢印キーで右に動く else if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.position += new Vector3(1, 0, 0); } // 自動で下に移動させつつ、下矢印キーでも移動する else if (Input.GetKeyDown(KeyCode.DownArrow) || Time.time-previousTime >= fallTime) { transform.position += new Vector3(0, -1, 0); previousTime = Time.time; } } }
上のコードを書くとTminoが左右に動いて、1秒ごとに下にも動きます。
少しコードを解説すると、
transform.positionはそのオブジェクトの場所を意味しています。今回であればTminoの位置ですね。
new Vector3(-1, 0, 0)は(x軸, y軸, z軸)を表します。
ですので、new Vector3(-1, 0, 0)はx軸方向に-1動くTminoが動くということです。
次はminoを回転させるスクリプトを作りましょう
Minoを回転させる
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Mino : MonoBehaviour { public float previousTime; // minoの落ちる時間 public float fallTime = 1f; // mino回転 public Vector3 rotationPoint; void Update() { MinoMovememt(); } private void MinoMovememt() { // 左矢印キーで左に動く if (Input.GetKeyDown(KeyCode.LeftArrow)) { transform.position += new Vector3(-1, 0, 0); } // 右矢印キーで右に動く else if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.position += new Vector3(1, 0, 0); } // 自動で下に移動させつつ、下矢印キーでも移動する else if (Input.GetKeyDown(KeyCode.DownArrow) || Time.time - previousTime >= fallTime) { transform.position += new Vector3(0, -1, 0); previousTime = Time.time; } else if (Input.GetKeyDown(KeyCode.UpArrow)) { // minoを上矢印キーを押して回転させる transform.RotateAround(transform.TransformPoint(rotationPoint), new Vector3(0, 0, 1), 90); } } }
上のスクリプトを書くとminoが回転するようになります。
transform.TransformPoint(rotationPoint)について少し説明するとグローバル空間に合わせるためです。
グローバル空間とローカル空間については、結構ややこしいので割愛しますが、また別の記事で解説しようと思います。
UdemyでUnityを学習する
個人的に、最初のUnityでの開発は動画を見ながら行うことをオススメします。
Udemyには初心者向けから中級者向けなどUnityを教えてくれる教材が揃っていて、割引期間だと数千円で講座を受講できます。
スペシャリストの方の講義が数千円で学べると思うと本当に安いと感心します。
実際に私もいくつかUdemyで課金をして色々学んでいる学習者の一人です。
また、Udemyを使ったことがない方も30日返金保証もついているので安心して始めることができます。
まずはお試しで講座を受講してみましょう。
今回のまとめ
今回はminoの動きを実際にコーディングしました。
しかし、このままではステージ上でminoが止まらず、ステージの枠外にも移動できてしまいます。
下に次回のリンクを貼っているので、ご確認ください。
次回はminoが枠外に移動できないように、移動範囲を制限するところから始めます!
⭐️あわせて読もう!
→Unityテトリスの作り方-4
コメント