UnityUnityメモ

Unity マウス長押しでため込んだ力を表示するパワーゲージの作り方

Unity

はじめに

こんにちは!今回は、Unityでマウスを長押ししてためたパワーをゲージで可視化し、マウスを離すとキューブにパワーが加わる方法を詳しく説明します。Unity初心者の方でも分かりやすく説明しますので、一緒に楽しく学びましょう!Unityを触ったことがないという方はコチラの記事から見てみてください!

1. プロジェクトの準備

まず、Unityを起動して新しい3Dプロジェクトを作成します。プロジェクト名は「PowerGauge」などにしておきましょう。



2. キューブの配置

まずはシーンにキューブを配置します。

  1. ヒエラルキー(Hierarchy)ウィンドウで右クリックし、「3D Object」→「Cube」を選びます。
  2. サイズや位置はそのままでも大丈夫です!見やすい位置に配置してください。

物理特性を追加する

次に、キューブに「Rigidbody」というコンポーネントを追加します。

  1. ヒエラルキーの「Cube」を選択します。
  2. インスペクター画面の「AddComponent」ボタンをクリックします。
  3. 「Rigidbody」を検索して追加します。



3. UI ゲージの作成

次に、パワーを可視化するためのUIゲージを作成します。

  1. ヒエラルキーウィンドウで右クリックし、「UI」→「Slider」を選びます。
  2. スライダーの位置を画面の下部に配置し、パワーゲージとして使います。
  3. ゲージの作り方がわからない方はこちらの記事を参考にしてください。



4. スクリプトの作成

次に、キューブにパワーを加えるためのスクリプトを作成します。

  1. プロジェクトウィンドウを右クリック「Create」→「C#Script」を選択します。
  2. スクリプトをダブルクリックで開いて、以下のコードを入力します。

コード全体の説明

このスクリプトは、ユーザーがマウスの左ボタンを押すと「パワー」が増加し、ボタンを離すとそのパワーを使ってオブジェクトに力を加えるようになっています。また、スライダーを使って現在のパワーを視覚的に表示します。

各部分の説明

  1. usingステートメント
    • これは必要なライブラリをインポートしています。System.CollectionsSystem.Collections.Genericはコレクションの操作に、UnityEngineはUnityの基本的な機能に、UnityEngine.UIはUIの操作に使います。
  2. public class PowerController : MonoBehaviour:
    • この行はクラスの定義です。MonoBehaviourを継承しているので、Unityのコンポーネントとして使えます。
  3. メンバ変数の定義
    • power: パワーを保持するための変数。
    • rb: Rigidbodyコンポーネントを保持する変数。
    • slider: UIのスライダーコンポーネントを保持する変数。
  4. Startメソッド
    • このメソッドはゲーム開始時に一度だけ呼ばれます。ここでは、パワーとスライダーの値を初期化しています。
  5. Updateメソッド
    • Updateメソッドは毎フレーム呼ばれます。
    • Input.GetMouseButton(0): マウスの左ボタンが押されている間に実行。
      • パワーが10未満なら、0.1ずつ増加。
    • Input.GetMouseButtonUp(0): マウスの左ボタンが離されたときに実行。
      • Rigidbodyコンポーネントを取得し、z方向にパワーを使って力を加える。
      • パワーをリセット。
    • Debug.Log(power): 現在のパワーをコンソールに表示。
    • slider.value = power * 0.1f: スライダーの値を更新。

全体の動き

  1. ゲームが開始すると、Startメソッドが実行され、パワーとスライダーの値が0に設定されます。
  2. ユーザーがマウスの左ボタンを押すと、パワーが徐々に増加します。
  3. マウスの左ボタンを離すと、Rigidbodyコンポーネントに力が加えられ、オブジェクトが前方に飛びます。
  4. パワーの値は常にコンソールに表示され、スライダーにも反映されます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PowerController : MonoBehaviour
{
    private float power;
    public Rigidbody rb;
    public Slider slider;

    void Start()
    {
        power = 0;
        slider.value = 0;
    }

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            if (power < 10)
            {
                power += 0.1f;
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            rb = GetComponent<Rigidbody>();
            rb.AddForce(0, 0, power * 2, ForceMode.Impulse);
            power = 0;
        }

        Debug.Log(power);
        slider.value = power * 0.1f;
    }
}

スクリプトのアタッチ

スライダーとスクリプトを連携させます。

  1. ヒエラルキー(Hierarchy)ウィンドウでスライダーを選びます。
  2. インスペクター(Inspector)ウィンドウでスライダーを「PowerController」スクリプトの「Slider」フィールドにドラッグ&ドロップします。
  3. 同様に、「Rigidbody」コンポーネントのついた「Cube」を「PowerController」スクリプトの「Rb」フィールドにドラッグ&ドロップします。



6. 動作確認

すべての設定が終わったら、シーンを再生して動作を確認しましょう。

マウスを長押しするとゲージが増え、離すとキューブにパワーが加わって前進します!

これで、マウス長押しでため込んだパワーをゲージで可視化し、キューブにパワーを加える方法が完成です。お疲れさまでした!

おすすめのアセット

VFX Ui Progress Bar」は、魅力的なアニメーション付きプログレスバーを簡単に導入できるアセットです!シンプルなUIをスタイリッシュに仕上げるだけでなく、色やサイズ、アニメーション速度も自由にカスタマイズ可能!Unity標準UIとの互換性もバッチリで、時間と労力を節約しながら、プロフェッショナルな見た目を実現します。

気になった方は、ぜひチェックしてみてくださいね!これだけでプロジェクトの完成度がグッと上がりますよ!

よくある質問

Q
ゲージが正しく表示されません。どうすればいいですか?
A

スライダーが正しい位置に配置されているか確認し、スクリプトの「Slider」フィールドに正しくアタッチされているかチェックしてください。

Q
キューブが動きません。どうすればいいですか?
A

キューブにRigidbodyコンポーネントがアタッチされているか確認し、スクリプトが正しくアタッチされているかもチェックしてください。

Q
ゲージの速度を調整したいです。どうすればいいですか?
A

「Update」メソッド内の「power += 0.1f」を変更して、ゲージの増加速度を調整できます。