入力機能の実装1

InputSystem設定

基本的にはUnity公式のyoutubeチャンネルで配信していた内容に従う。
Input System再入門 - Unityステーション - YouTube


Projectフォルダ内にInputsystemフォルダを作りInputActionファイルを作成。

InputActionファイル設定

Player
- Move : LeftStick , WASD , Arrow
 キャラの移動用(横スクロール予定なので上下は必要ないかも)
- Jump : Button South , Space
 ジャンプ用
- Attack : Button East , F(Fキーから変えたほうがよい?) , Mouth Left
 攻撃用
- Grab : Button West , G , Mouth Right
   ものをつかむよう(投げるボタンはどうする?持った後は置く?投げる?)
- Menu : Button North , Escape
UI
とりあえずデフォルトそのまま

InputSystemを受け取るコンポーネント

簡易的にボタンの判定と方向キーの入力を取得
操作するオブジェクトには、以下のソースを継承したスクリプトを張り付けるのがいい?

using UnityEngine;
using UnityEngine.InputSystem;

namespace Sandbox
{
    public class InputComponent : MonoBehaviour
    {
        [SerializeField]
        bool _inputActive;
        public bool InputActive { get { return _inputActive; } set { _inputActive = value; } }
        PlayerInputAction _playerInputAction;

        [SerializeField] Vector2 inputMove; public Vector2 InputMove { get { return inputMove; } }
        [SerializeField] bool _isJumpPressed; public bool IsJumpPressed { get { return _isJumpPressed; } }
        [SerializeField] bool _isAttackPressed; public bool IsAttackPressed { get { return _isAttackPressed; } }
        [SerializeField] bool _isGrabPressed; public bool IsGrabPressed { get { return _isGrabPressed; } }
        [SerializeField] bool _isMenuPressed; public bool IsMenuPressed { get { return _isMenuPressed; } }

        protected virtual void Awake()
        {
            _playerInputAction = new PlayerInputAction();
            _playerInputAction.Enable();

            _playerInputAction.Player.Jump.performed += OnJump;
            _playerInputAction.Player.Jump.canceled += OnJump;
            _playerInputAction.Player.Attack.performed += OnAttack;
            _playerInputAction.Player.Attack.canceled += OnAttack;
            _playerInputAction.Player.Grab.performed += OnGrab;
            _playerInputAction.Player.Grab.canceled += OnGrab;
            _playerInputAction.Player.Menu.performed += OnMenu;
            _playerInputAction.Player.Menu.canceled += OnMenu;
        }  
        protected virtual void Update()
        {
            //inputMove = _playerInputAction.Player.Move.ReadValue<Vector2>();
        }
        protected virtual void FixedUpdate()
        {
            inputMove = _playerInputAction.Player.Move.ReadValue<Vector2>();

        }

        protected virtual void OnAttack(InputAction.CallbackContext obj)
        {
            _isAttackPressed = obj.ReadValueAsButton();
        }


        protected virtual void OnJump(InputAction.CallbackContext obj)
        {
            _isJumpPressed = obj.ReadValueAsButton();
        }
        protected virtual void OnGrab(InputAction.CallbackContext obj)
        {
            _isGrabPressed = obj.ReadValueAsButton();
        }
        protected virtual void OnMenu(InputAction.CallbackContext obj)
        {
            _isMenuPressed = obj.ReadValueAsButton();
        }

        private void OnDisable()
        {
            _playerInputAction.Disable();
        }
        private void OnDestroy()
        {
            _playerInputAction.Dispose();
        }
    }
}

Unity環境準備5(UI環境準備)

UI環境の設定

以下サイトでの掲載記事を参照
開発初期に暇を持て余しているUnityエンジニアができる42のTips後編 - 渋谷ほととぎす通信

UIEnviromentとUICanvasInitializerを作成

-UIScaleMode : Scale Wtih Screen Size -Reference Resolution : 1920 * 1080 -ScreenMatchMode : Expandに設定

Unity環境準備3(フォルダ構成)

フォルダ構成

基本的にここを参照する

暇なUnityエンジニアがやるべき42のTips前編 - 渋谷ほととぎす通信

Moduleは何を格納することを想定されているか分からない。
OutGameはUIと置き換えた。

各フォルダはAssemblyで分割する

Unity環境準備2(プロジェクト設定)

プロジェクト設定

  • プロジェクト名
    GensokyoExplorer

最初にやったこと

-PlasticSCM
ブランチなどもできるほうで構築。
プラスティックSCMのブランチエクスプローラーでいろいろ設定できそう
今はまだ詳しい操作方法は調べない