スポンサーリンク
スポンサーリンク
UnityUnityメモ

Unityでクリックでボールを発射し、押し続ける時間でサイズを変える方法

Unity

Unityを使ってゲームを作る際に、プレイヤーのアクションとして「ボールを発射する」機能を取り入れたいと思ったことはありませんか?この記事では、Unityで簡単に「左クリックを押すとボールを発射し、さらにクリックを押し続ける時間に応じてボールのサイズを変える」機能を実装する方法を初心者にも分かりやすく解説します。

ステップ1:Unityプロジェクトの準備

まず、Unityを開いて新しいプロジェクトを作成します。プロジェクト名は何でも良いですが、ここでは「BallShooter」としておきましょう。Unityの基本操作に慣れていない方は、Unityの公式チュートリアルから始めることをお勧めします。

ステップ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.localScalepowerに基づいて設定することで、押し続けた時間に応じてボールのサイズが変化します。

このスクリプトを使用するには、ボールのPrefabにRigidbodyコンポーネントがアタッチされていることを確認してください。また、このスクリプトを任意のオブジェクト(通常はカメラやゲームコントローラーなどのゲーム内の操作を受け持つオブジェクト)にアタッチし、InspectorウィンドウからprefabフィールドにボールのPrefabを設定します。これにより、ゲーム中に左クリックを使用してボールを発射し、そのサイズを調整する機能が実装されます。

ステップ4:ゲームオブジェクトにスクリプトを適用

スクリプトを作成したら、それをゲームのカメラや、ボールを発射する起点となるオブジェクトにアタッチします。

さらに、InspectorウィンドウからballPrefabに発射するボールのプレハブを設定してください。これで、左クリックを押すとボールが発射され、押し続ける時間に応じてボールのサイズが大きくなる機能が実装できました。

まとめ

Unityで「左クリックを押すとボールを発射し、押し続ける時間が長ければ長いほど、発射するボールが大きくなる」という機能の実装方法をご紹介しました。この記事が、Unityでゲームを作る楽しさを発見するきっかけになれば幸いです。Unityでのゲーム開発は想像力と創造力の宝庫です。ぜひ、この機能を自分のゲームに取り入れて、プレイヤーに新しい体験を提供してみてください。

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました