Unityを使って、ゲームの中で障害物がプレイヤーの上に落下する仕組みを作ってみましょう。今回は、3つの球体(Sphere)がプレイヤーが真下を通ると落下するように設定します。簡単に説明するので、一緒にやってみましょう!
ステップ1:オブジェクトの準備
まずはプレイヤー(Cube)と床(Plane)をシーンに配置します。
- Hierarchyウィンドウで右クリックします。3D Object > Cubeを選びます。
- 同じように3D Object > Planeを選びます。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-15_175117.png)
ステップ2: 障害物の配置
次に、落下する球体を作ります。
- Hierarchyウィンドウで右クリックします。
- 3D Object > Sphere を選びます。
- Inspectorウィンドウで「Add Component」をクリックし、「Rigidbody」を追加します。
- useGravityのチェックを外してSphireが落下しないようにしておきます。
- 作成された球体を3つコピーして、適当な位置に配置します。プレイヤーの進行ルートの上に配置すると良いでしょう。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-15_175306.png)
スクリプトの作成
球体がプレイヤーの真下を通ると落下する仕組みを作るためのスクリプトを作成します。
- Projectウィンドウで右クリックして、Create > C# Script を選びます。スクリプトの名前を「SphereDrop」にします。
- スクリプトを開いて、以下のコードを入力します。
using UnityEngine;
public class SphereDrop : MonoBehaviour
{
public GameObject target;
void Update()
{
Vector3 cube = target.transform.position;
float dis = Vector3.Distance(cube, this.transform.position);
if (dis < 4.6f)
{
SphereGravity();
}
}
void SphereGravity()
{
GetComponent<Rigidbody>().useGravity = true;
}
}
- Hierarchyウィンドウで3つの球体を選びます。
- スクリプト「SphereDrop」を選んだ球体にドラッグ&ドロップします。
プレイヤーを十字キーで移動させるスクリプト
- Projectウィンドウで右クリックして、Create > C# Script を選びます。スクリプトの名前を「PlayerMove」にします。
- スクリプトを開いて、以下のコードを入力します。
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
void Update()
{
float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f;
float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;
transform.position = new Vector3
(
transform.position.x + dx, 0.5f, transform.position.z + dz
);
}
}
- 作成したスクリプトをcubeにアタッチして使用します。
動作確認
以上で設定は完了です。シーンを再生して、プレイヤーを球体の下を通過させてみてください。球体がプレイヤーの真下に来たときに落下することを確認しましょう。
これで、Unityで障害物がプレイヤーの上に落下する仕組みが完成しました。シンプルですが、ゲームの難易度を上げる面白い要素になりますね!どんどんカスタマイズして、素敵なゲームを作ってくださいね。
おすすめのアセット
プラットフォーマーエンジンは、Unityで2Dプラットフォームゲームを作成するための強力なテンプレートです。このエンジンを使えば、ジャンプや移動、敵との戦闘など、基本的なゲームプレイ要素を簡単に追加できます。