はじめに
Unityでゲームを開発していると、「ターゲットに向かってオブジェクトを飛ばす」機能は非常によく使われます。この機能は、シューティングゲームやアクションゲーム、さらにはパズルゲームなど、さまざまなジャンルで応用が可能です。
しかし、Unityの初心者にとっては、この機能の実装方法が分かりにくい場合があります。この記事では、Unityでターゲットに向かってオブジェクトを飛ばす方法を、初心者でも理解しやすいように解説します。
基本的な概念
まずは、Unityにおけるオブジェクトとターゲットの基本的な概念から説明します。Unityでは、ゲームの中で操作する全ての要素を「オブジェクト」と呼びます。これにはキャラクター、アイテム、建物などが含まれます。一方、「ターゲット」は、オブジェクトが向かうべき目標点を指します。
オブジェクトの作成
Unityでオブジェクトを作成するには、まずUnityのエディタを開き、「Hierarchy」ウィンドウで右クリックし、「3DObject」を選択します。一覧が表示されるので選んでクリックします。この記事では二つのSphire(飛ばすオブジェクト「Player」とターゲット「Target」)とPlane(床)を使用します。
![](https://cbagames.jp/wp-content/uploads/2024/01/2024-01-30_173653.png)
3つのオブジェクトはわかりやすいようにMaterialで色を設定しました。
![](https://cbagames.jp/wp-content/uploads/2024/01/2024-01-30_173517.png)
次に、二つのSphireに「Rigidbody」コンポーネントを追加します。
スクリプトの作成
このスクリプトは、マウスのクリックを使ってオブジェクトを特定のターゲットに向かって動かすためのものです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClickShoot : MonoBehaviour
{
private float power;
public Rigidbody rb;
public GameObject target;
void Start()
{
power = 30;
target = GameObject.Find("Target");
}
void OnMouseDown()
{
transform.LookAt(target.transform);
rb = GetComponent<Rigidbody>();
rb.velocity = transform.forward.normalized * power;
}
}
各部分の説明
- 変数の宣言
private float power;
はオブジェクトを動かす際の力の大きさを指定します。public Rigidbody rb;
はオブジェクトの物理的な動きを制御するためのRigidbodyコンポーネントを参照します。public GameObject target;
はオブジェクトが向かうべきターゲットを指定します。
- Startメソッド
- ゲーム開始時に一度だけ呼び出されるメソッドです。
power = 30;
でオブジェクトを動かす力の大きさを設定しています。target = GameObject.Find("Target");
でシーン内の”Target”という名前のGameObjectを探し出し、ターゲットとして設定します。
- OnMouseDownメソッド
- マウスがこのオブジェクトをクリックしたときに呼び出されるメソッドです。
transform.LookAt(target.transform);
でオブジェクトがターゲットの方向を向きます。rb = GetComponent<Rigidbody>();
でRigidbodyコンポーネントを取得します。rb.velocity = transform.forward.normalized * power;
でオブジェクトに力を加え、ターゲットの方向に動かします。
注意点
- このスクリプトを使うためには、対象のオブジェクトに
Rigidbody
コンポーネントがアタッチされている必要があります。 - オブジェクトがターゲットに向かう力の大きさは
power
変数で調整できます。 - ターゲットはシーン内に存在し、名前が”Target”である必要があります。
ゲームを実行してみる
ゲームを実行してプレイヤーオブジェクトをクリックするとターゲットに向かって飛んでいきます。
まとめ
Unityでターゲットに向かってオブジェクトを飛ばす方法は、初心者にとっては少し難しく感じるかもしれませんが、基本的な原理を理解すれば、さまざまな応用が可能になります。この記事が、Unityでのゲーム開発において、オブジェクトを動かす楽しさと可能性を探求する一助となれば幸いです。