はじめに
今回は、Unityの基本的な使い方を学びながら、「キューブが別のキューブの外壁に沿って動く」というシンプルだけど楽しい機能を作ってみましょう。
ステップ1: Unityプロジェクトの準備
まず、Unity Hubを開き、「新規プロジェクト」をクリックして、プロジェクトを作成します。プロジェクトタイプは「3D」を選択しましょう。プロジェクト名と保存先を設定したら、「作成」をクリックして、プロジェクトを開始します。
![](https://cbagames.jp/wp-content/uploads/2024/01/2024-01-27_184016.png)
ステップ2: シーンのセットアップ
Unityエディタが開いたら、まずはシンプルなシーンをセットアップしましょう。Hierarchyウィンドウで右クリックし、「3D Object > Cube」を選択してCubeを作成します。次にCubeの外周に沿って動くオブジェクトを作成します。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-21_155349.png)
ステップ3: Cubeを動かす
Cubeが壁の周りを動くためのスクリプトを作成します。まず、Cubeオブジェクトを選択し、Inspectorウィンドウの「Add Component」ボタンをクリックして、「New Script」を選択します。スクリプトの名前を「CubeController」として、「Create and Add」をクリックします。
スクリプトを開いて、以下のコードを入力またはコピーします。
このコードはUnityでCubeオブジェクトが壁の周りを動く仕組みを実装しています。具体的には、Cubeが特定の座標に達したときに方向を変えるように設計されています。このプロセスは、Update
メソッド内で繰り返し行われ、Cubeの位置に基づいて条件分岐を使用しています。
コードの解説
- 変数定義:
xBool
とyBool
は、Cubeがx軸またはy軸に沿って特定の点に達したかどうかを追跡するために使用されます。move
はCubeが毎フレーム移動する距離を定義します。 - Startメソッド: ゲーム開始時に呼び出され、
move
、xBool
、yBool
の初期値を設定します。 - Updateメソッド: ゲームの各フレームで呼び出され、Cubeの移動と回転を制御します。
- Cubeは常にx軸方向に
move
の値で移動します。 - Cubeが特定のx軸またはy軸の座標に到達した際に、方向転換するために90度回転します。
- 方向転換は、
xBool
とyBool
の値を切り替えることによって制御されます。これにより、Cubeが一度回転した後、同じ条件で再度回転することを防ぎます。
- Cubeは常にx軸方向に
動作の詳細
- x軸の正の方向に移動: Cubeがx = 3.0に達すると、最初の方向転換が行われます。
- y軸の負の方向に移動: 次に、y = -3.0に達すると、二度目の方向転換が行われます。
- x軸の負の方向に移動: x = -3.0に達すると、三度目の方向転換が行われます。
- y軸の正の方向に移動: 最後に、y = 3.0に達すると、四度目の方向転換が行われ、このサイクルが繰り返されます。
using UnityEngine;
public class CubeController : MonoBehaviour
{
private bool xBool;
private bool yBool;
private float move;
void Start()
{
move = 0.05f;
xBool = false;
yBool = false;
}
void Update()
{
Vector3 position = new Vector3(move, 0, 0);
transform.Translate(position);
if (float.Parse(this.transform.position.x.ToString("f2")) == 3.0f)
{
if (!xBool)
{
xBool = true;
transform.Rotate(new Vector3(0, 0, -90));
}
}
if (float.Parse(this.transform.position.y.ToString("f2")) == -3.0f)
{
if (!yBool)
{
yBool = true;
transform.Rotate(new Vector3(0, 0, -90));
}
}
if (float.Parse(this.transform.position.x.ToString("f2")) == -3.0f)
{
if (xBool)
{
xBool = false;
transform.Rotate(new Vector3(0, 0, -90));
}
}
if (float.Parse(this.transform.position.y.ToString("f2")) == 3.0f)
{
if (yBool)
{
yBool = false;
transform.Rotate(new Vector3(0, 0, -90));
}
}
}
}
これで、Cubeの外周をずっと動き続けるシンプルなシステムが完成しました。
まとめ
この記事を通じて、Unityで簡単な動きを作る方法を学べましたね。もっと色々な動きや機能を加えて、自分だけのゲームを作ってみるのも楽しいですよ!
おすすめのアセット
12 Endless Games Bundleは、エンドレスゲームをテーマにした究極のコレクションアセットです。ランナー、ジャンプ、シューティングなど、12種類のエンドレスゲームが含まれており、初心者からプロまで幅広く利用できます。
このバンドルの特徴は、各ゲームがプレイ可能な完成プロジェクトとして提供されていることです。高品質なグラフィックとスムーズな操作性を備えており、カスタマイズ可能なスクリプトやアートアセットも付属しています。これにより、オリジナルのエンドレスゲームを簡単に作成することができます。また、Unityの最新バージョンに対応しているため、すぐにプロジェクトに取り入れることができます。