Unityを使ってゲームを作る際に、プレイヤーのアクションとして「ボールを発射する」機能を取り入れたいと思ったことはありませんか?この記事では、Unityで簡単に「左クリックを押すとボールを発射し、さらにクリックを押し続ける時間に応じてボールのサイズを変える」機能を実装する方法を初心者にも分かりやすく解説します。
ステップ1:Unityプロジェクトの準備
まず、Unityを開いて新しいプロジェクトを作成します。プロジェクト名は何でも良いですが、ここでは「BallShooter」としておきましょう。Unityの基本操作に慣れていない方は、Unityの公式チュートリアルから始めることをお勧めします。
![](https://cbagames.jp/wp-content/uploads/2024/01/2024-01-27_184016.png)
ステップ2:ボールの準備
ゲームに使用するボールのオブジェクトを準備します。ヒエラルキーウィンドウで右クリックし、「3D Object」→「Sphere」を選択して、ボールを作成しましょう。Inspectorウィンドウでサイズや色を調整して、お好みのボールにカスタマイズします。
SphereにはRigidbodyをアタッチしておきます。
プロジェクトビューにPrefabフォルダを作成してSphereをprefabにしておきます。
ステップ3:スクリプトの作成
ボールを発射する機能を実装するために、C#スクリプトを作成します。プロジェクトウィンドウで右クリックし、「Create」→「C# Script」を選択し、「BallShooter」という名前を付けます。作成したスクリプトをダブルクリックして開き、以下のコードを書き込みましょう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BallShooter: MonoBehaviour
{
public GameObject prefab;
private float power;
private Vector3 mousePosition;
void Start()
{
power = 0;
}
void Update()
{
if (Input.GetMouseButton(0))
{
if (power < 5)
{
power += 0.1f;
}
}
if (Input.GetMouseButtonUp(0))
{
GameObject ball = GameObject.Instantiate(prefab) as GameObject;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 dir = ray.direction;
ball.transform.localScale = new Vector3(power, power, power);
ball.GetComponent<Rigidbody>().AddForce(dir * 2000);
power = 0;
}
}
}
このスクリプトはUnityでマウスの左クリックを使ってボールを発射する機能を実装しています。ここでの主なポイントは、左クリックを押し続けることで「power」変数を増加させ、これにより発射するボールの大きさを変化させることです。また、ボールはマウスカーソルの方向に向かって発射されます。スクリプトの概要は以下の通りです:
power
変数はボールの大きさ(および発射力)を制御します。左クリックを押し続けることで徐々に増加し、最大値は5に設定されています。Update
メソッド内で、ユーザーがマウスの左ボタンを押しているか監視します。押し続けることでpower
を増加させ、左ボタンを離した瞬間にボールを発射します。- ボールは
prefab
から生成され、マウスカーソルの位置に応じた方向に発射されます。この方向は、カメラからマウスカーソルへのレイ(光線)を使って計算されます。 - ボールには
Rigidbody
コンポーネントが必要で、これにより物理的な力(この場合はdir * 2000
)を加えて発射します。 - ボールの
transform.localScale
をpower
に基づいて設定することで、押し続けた時間に応じてボールのサイズが変化します。
このスクリプトを使用するには、ボールのPrefabにRigidbody
コンポーネントがアタッチされていることを確認してください。また、このスクリプトを任意のオブジェクト(通常はカメラやゲームコントローラーなどのゲーム内の操作を受け持つオブジェクト)にアタッチし、Inspectorウィンドウからprefab
フィールドにボールのPrefabを設定します。これにより、ゲーム中に左クリックを使用してボールを発射し、そのサイズを調整する機能が実装されます。
ステップ4:ゲームオブジェクトにスクリプトを適用
スクリプトを作成したら、それをゲームのカメラや、ボールを発射する起点となるオブジェクトにアタッチします。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-12_220244.png)
さらに、InspectorウィンドウからballPrefab
に発射するボールのプレハブを設定してください。これで、左クリックを押すとボールが発射され、押し続ける時間に応じてボールのサイズが大きくなる機能が実装できました。
まとめ
Unityで「左クリックを押すとボールを発射し、押し続ける時間が長ければ長いほど、発射するボールが大きくなる」という機能の実装方法をご紹介しました。この記事が、Unityでゲームを作る楽しさを発見するきっかけになれば幸いです。Unityでのゲーム開発は想像力と創造力の宝庫です。ぜひ、この機能を自分のゲームに取り入れて、プレイヤーに新しい体験を提供してみてください。