【Unity】Project TCC で遊ぼう~UC-01-01 Walk: キャラクターを歩行させる~

ProjectTCC_20240721 Unity
ProjectTCC_20240721

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

Project TCC で遊ぼう~UC-01-01 Walk: キャラクターを歩行させる~

ProjectTCC_20240721
ProjectTCC_20240721

Project TCC

TCC は Tiny Character Controller の略ということですが、小さなコンポーネントを組み合わせてゲームを作っていくシステムになっています。
下記のサイトからダウンロードして遊んでいきましょう。

GitHub - unity3d-jp/Project_TCC: TCC stands for Tiny Character Controller. TCC is the best way to make your own game. This repository contains all packages and examples for TCC projects.
TCC stands for Tiny Character Controller. TCC is the best way to make your own game. This repository contains all packag...

UC-01-01_Walk

UC-01-01_Walk シーンを開きます。
Unityエディター上で再生すると、ユニティちゃんを歩かせることが出来ます。

ヒエラルキーの Player オブジェクトを選択します。

Playerオブジェクト
Playerオブジェクト

インスペクターを見ると、たくさんのコンポーネントが付いていることが分かります。

Playerオブジェクトについているコンポーネント
Playerオブジェクトについているコンポーネント

Script Machine コンポーネントは、Visual Scripting でコード無しで動かすことが出来るようになっています。
今回は、Visual Scripting でプログラミングされている個所を、コードに変換して行きたいと思います。

Visual Scripting からコードに変換する

シーンの複製

まずは、シーンをコピーして、コピーしたシーンを編集していきます。
UC-01-01_Walk シーンを選択して Ctrl+D で複製します。
複製したシーンの名前を適当に変更します。(ここでは UC-01-01_Walk_Copy にしました)

シーンの複製
シーンの複製

Visual Scripting の確認

Player オブジェクトについている Script Machine コンポーネントの Edit Graph ボタンを押します。
Visual Scripting で作成されたプログラムを確認することが出来ます。

Script Graph
Script Graph

キャラクターを移動させる処理はこちらになります。

キャラクターの移動
キャラクターの移動

アニメーションの設定はこちらになります。

アニメーションの設定
アニメーションの設定

C# スクリプトの作成

今回は、Visual Scripting を使わないので、Player オブジェクトの Script Machine コンポーネントを Remove Component します。
そして、C# スクリプトを作成して、Player オブジェクトにくっ付けます。
C# スクリプトの名前は MyWalkTest にしました。

MyWalkTest の作成
MyWalkTest の作成

MyWalkTest の内容はこちらになります。

using Unity.TinyCharacterController.Control;
using UnityEngine;
using UnityEngine.InputSystem;

public class MyWalkTest : MonoBehaviour {
    private MoveControl m_rMoveControl;
    private Animator m_rAnimator;
    private PlayerInput m_rPlayerInput;
    private InputAction m_rMove;

    void Awake() {
        TryGetComponent<MoveControl>(out m_rMoveControl);
        TryGetComponent<Animator>(out m_rAnimator);
        TryGetComponent<PlayerInput>(out m_rPlayerInput);
        if (m_rPlayerInput != null) {
            m_rMove = m_rPlayerInput.actions["Move"];
        }
    }

    private void OnEnable() {
        if (m_rPlayerInput != null) {
            m_rMove.performed += OnMove;
            m_rMove.canceled += OnMoveStop;
        }
    }

    private void OnDisable() {
        if (m_rPlayerInput != null) {
            m_rMove.performed -= OnMove;
            m_rMove.canceled -= OnMoveStop;
        }
    }

    private void Update() {
        if (m_rMoveControl != null) {
            float fSpeed = m_rMoveControl.CurrentSpeed;
            if (m_rAnimator != null) {
                m_rAnimator.SetFloat("Speed", fSpeed);
            }
        }
    }

    private void OnMove(InputAction.CallbackContext context) {
        if (m_rMoveControl == null) {
            return;
        }
        Vector2 value = context.ReadValue<Vector2>();
        m_rMoveControl.Move(value);
    }

    private void OnMoveStop(InputAction.CallbackContext context) {
        if (m_rMoveControl == null) {
            return;
        }
        Vector2 value = context.ReadValue<Vector2>();
        m_rMoveControl.Move(value);
    }
}

動作確認

Unityエディターで再生して、動作確認します。
ユニティちゃんを歩かせることが出来れば成功です。

Input System

Project TCC は、Input System を使用して、入力処理をしています。
Input System について学びたい方は下記の動画が参考になります。

まとめ

Project TCC のキャラクターを歩かせるサンプルを Visual Scripting から C# スクリプトに変換して動かしてみました。
ユーザーからの入力は、Input System を使用して処理しています。
まずは、Input System とはどういうものか理解してから先に進むといいと思います。

コメント

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