【Unity】超簡単!溜め攻撃の作り方!

Unity

今回は溜め攻撃の実装方法を紹介したいと思います。

簡単なので是非作ってみてください!

必要はないのですが、見やすいようにするために二つのテキストを用意します。

三段階の溜めの結果を表示する左側のテキストと

溜め攻撃のカウントを表示する右側のテキスト

準備は以上

それでは溜め攻撃のスクリプトを書いていきましょう。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class ChargeScript : MonoBehaviour
{

    [SerializeField] TextMeshProUGUI timeText;   // 計測用の変数のテキスト
    [SerializeField] TextMeshProUGUI text;       // 溜め結果表示用テキスト
    [SerializeField] float chargeAttackMaxTime;  // 最大溜め値
    [SerializeField] float chargeAttackMidTime;  // 中溜め値
    float chargeAttackTotalIncreaseTimer;        // 計測用の変数

    void Start()
    {
        chargeAttackTotalIncreaseTimer = 0;
    }

    void Update()
    {
        // 溜め開始
        if (Input.GetMouseButton(1))
        {
            // 最大値じゃない間溜める
            if (chargeAttackTotalIncreaseTimer <= chargeAttackMaxTime)
            {
                chargeAttackTotalIncreaseTimer += Time.deltaTime;
            }
        }

        // ため攻撃発動
        else if (Input.GetMouseButtonUp(1))
        {
            // 最大溜め
            if(chargeAttackTotalIncreaseTimer >= chargeAttackMaxTime)
            {
                text.text = "Max";
            }
            // 中溜め
            if((chargeAttackTotalIncreaseTimer < chargeAttackMaxTime) && (chargeAttackTotalIncreaseTimer >= chargeAttackMidTime))
            {
                text.text = "Mid";
            }
            // 小溜め
            if(chargeAttackTotalIncreaseTimer < chargeAttackMidTime)
            {
                text.text = "Min";
            }

            chargeAttackTotalIncreaseTimer = 0;// 溜め値をリセット
        }

        timeText.text = chargeAttackTotalIncreaseTimer.ToString("0.0");// 溜め値をテキストで見れるようにする
    }
}

このスクリプトを溜め攻撃するオブジェクトにアタッチし、値を入れていきます。

これで実行をしてみましょう。

このように右マウスボタンをホールドした時間によって溜め攻撃の結果が変わります!

今回はテキストでやりましたが、これをゲージやエフェクトで作ればそれっぽくなりますね。

いかがだったでしょうか?

この記事がお役に立てればと思います。

タイトルとURLをコピーしました