今回は溜め攻撃の実装方法を紹介したいと思います。
簡単なので是非作ってみてください!
準備
必要はないのですが、見やすいようにするために二つのテキストを用意します。
三段階の溜めの結果を表示する左側のテキストと
溜め攻撃のカウントを表示する右側のテキスト
準備は以上
スクリプト
それでは溜め攻撃のスクリプトを書いていきましょう。
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");// 溜め値をテキストで見れるようにする
}
}
このスクリプトを溜め攻撃するオブジェクトにアタッチし、値を入れていきます。
これで実行をしてみましょう。
このように右マウスボタンをホールドした時間によって溜め攻撃の結果が変わります!
今回はテキストでやりましたが、これをゲージやエフェクトで作ればそれっぽくなりますね。
まとめ
いかがだったでしょうか?
この記事がお役に立てればと思います。