【Unity】Project TCC で遊ぼう~UC-03-01 Dash: キャラクターに瞬間的な移動を可能にさせます~

UC-03-01 Dash Unity
UC-03-01 Dash

Unity の Project TCC を触って、Unity の機能を学んでいきましょう。

Project TCC で遊ぼう~UC-03-01 Dash: キャラクターに瞬間的な移動を可能にさせます~

UC-03-01 Dash
UC-03-01 Dash

UC-03-01 Dash

変更点の確認

UC-03-01_Dash シーンを開きます。
Unityエディター上で再生して、ユニティちゃんを動かしてみましょう。

UC-01-05_Move_Jump_Crouch シーンと違うところは、Player オブジェクトの Script Machine に Dash の処理が追加されています。
マウスのホイールボタンをクリックするとダッシュします。

Script Machine
Script Machine

シーンの複製

UC-01-05_Move_Jump_Crouch シーンを複製して、UC-03-01_Dash_Copy という名前にします。

Input Action Asset の設定

Assets/TCC/Scenes/01_Move/Data_UC-01-05_Move_Jump_Crouch フォルダを複製して、Assets/TCC/Scenes/03_Action/Data_UC-03-01_Dash_Copy という名前にします。
フォルダ内のファイルも Data_UC-03-01_Dash_Copy という名前にします。
Input Action Asset(Data_UC-03-01_Dash_Copy)を選択して、インスペクターの Edit asset ボタンを押します。
Actions に Dash を追加します。

Dash の追加
Dash の追加

Dash にマウスの Middle Button を割り当てます。

マウスのホイールボタン
マウスのホイールボタン

Player オブジェクトの PlayerInput コンポーネントの Actions に Data_UC-03-01_Dash_Copy を設定します。

PlayerInput の設定
PlayerInput の設定

Animator コンポーネントの設定

Player オブジェクトの Animator コンポーネントの Controller に Assets/TCC/Scenes/03_Action/Data_UC-03-01_Dash を設定します。

Animator の設定
Animator の設定

ExtraForce コンポーネントの追加

Player オブジェクトに ExtraForce コンポーネントを追加します。

ExtraForce の追加
ExtraForce の追加

MyPlayer_03_01 スクリプトの作成

Assets/TCC/Scenes/03_Action/Data_UC-03-01_Dash_Copy/MyPlayer_03_01 スクリプトを新規作成します。
Player オブジェクトに MyPlayer_03_01 スクリプトを追加します。
MyPlayer_03_01 スクリプトの内容はこちらになります。

using Unity.TinyCharacterController.Effect;
using UnityEngine;
using UnityEngine.InputSystem;

public class MyPlayer_03_01 : MonoBehaviour {
    private PlayerInput m_rPlayerInput;
    private InputAction m_rDash;
    private Animator m_rAnimator;
    private ExtraForce m_rExtraForce;
    private float m_fCooldownDuration = 0.6f;
    private float m_fCooldownTime = 0f;

    private void Awake() {
        TryGetComponent<PlayerInput>(out m_rPlayerInput);
        if (m_rPlayerInput != null) {
            m_rDash = m_rPlayerInput.actions["Dash"];
        }
        TryGetComponent<Animator>(out m_rAnimator);
        TryGetComponent<ExtraForce>(out m_rExtraForce);
    }

    private void OnEnable() {
        if (m_rDash != null) {
            m_rDash.started += OnDash;
        }
    }

    private void OnDisable() {
        if (m_rDash != null) {
            m_rDash.started -= OnDash;
        }
    }

    private void Update() {
        // Cooldown.
        if (m_fCooldownTime > 0f) {
            m_fCooldownTime -= Time.deltaTime;
            if (m_fCooldownTime < 0f) {
                m_fCooldownTime = 0f;
            }
        }
    }

    private void OnDash(InputAction.CallbackContext context) {
        if (m_rAnimator == null) {
            return;
        }
        if (m_rAnimator.GetBool("IsCrouch")) {
            return;
        }

        // Cooldown.
        if (m_fCooldownTime > 0f) {
            return;
        }
        m_fCooldownTime = m_fCooldownDuration;

        if (m_rExtraForce == null) {
            return;
        }
        Vector3 vecForce = transform.forward * 15f;
        m_rExtraForce.AddForce(vecForce);

        if (m_rAnimator != null) {
            m_rAnimator.Play("DashStart");
        }
    }
}

動作確認

Unityエディターで再生して、動作確認します。
マウスのホイールボタンをクリックするとダッシュすれば成功です。

まとめ

Project TCC のキャラクターをダッシュさせるサンプルを Visual Scripting から C# スクリプトに変換して動かしてみました。
ExtraForce コンポーネントを使ってダッシュさせることが出来ます。

コメント

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