見出し画像

[Unity6] インプットシステム&プレファブ 2Dチュートリアル その2

注)[Unity6] インプットシステム&プレファブ 2Dチュートリアル その1
  の続きになります。先にその1を閲覧ください。


■[Unity6] インプットシステム&プレファブ 2Dチュートリアル その1へ


【8.2DGameObjectのPrefab化】

  • 簡単に説明しますが、Prefabとは、Object特定の情報
    「当たり判定」「物理制御」「プロパティー値」「子オブジェクト」
    等を持ったまま、再利用可能なアセットとしておく事を言います。
    Prefab化したObjectは複製したり、必要な場面で作成したり、
    必要無くなったら削除したり出来ます。
    例えばシューティングゲームの弾や敵や
    ステージのオブジェクト、木や障害物の配置等に使用できます。
    今回簡単に、上記で作成したPLATER(GameObject)を
    Prefab化します。

  1. ②Unity画面のHierarchyにある、PLAYER(GameObject)
    UnityProiject内 \Prefabe フォルダにドラッグ&ドロップすると、
    \Prefabフォルダに、PLAYER(GameObject)Prefabが作られます。

  2. Hierarchyにある、PLAYER(GameObject)は削除します。
    削除方法は、PLAYER(GameObject)にカーソルを合わせ、
    右クリック→Deleteを実行すると削除されます。Delキーでも消えます。

  • Prefab化したObjectは、プログラムから呼んだり、
    Unity Sceneウィンドにドラッグ&ドロップで配置する事もできます。
    Prefab化Object内で、Prefab化Objectを呼ぶ事も出来ます。


【9.空のObject・プログラムファイル作成】

Unity画面、空オブジェクト作成
  • 今回の説明では、空のObjectを作成しここからPLAYER(Prefab)を、
    呼び出してみたいと思います。

  1. Unity画面、Hierarchyで右クリック → Create Empty を実行すると、
    空のGameObjectが作成されます。

  2. Inspectorで、リネーム(MainGameLoop)し、PositonをXY共に0に。

  3. 空のGameObjectの完成です。

  • MainGameLoopは、実行時にプログラムを動かすだけの
    Objectになります。今回は作りませんが、
    オープニング、タイトル画面、ショップ画面、オプション画面、
    ゲーム画面、等への移行プログラム実行Objectとなります。
    なのでMainGameLoopと名付けました。

[プログラムファイル作成方法]

Project内プログラムファイル
  1. Proiject内 \Programフォルダで、
    右クリック→CreateMonoBehaviourScript を実行。

  2. NewMonoBehaviourScriptが作成されます。

  3. NewMonoBehaviourScriptをリネーム(MainGameLoop)します。

  4. もう一つNewMonoBehaviourScriptを作成し、
    PlayerControlにリネームします。後程、PLAYERを動かす為に使用。

  5. ファイルの拡張子はcsになりますので、
    MainGameLoop.cs PlayerControl.csと記載します


【10.Component・AddComponent】

  • コンポーネントとは、GameObjectに追加される機能や部品の事で、
    GameObjectの動作や見た目を定義します。
    GameObjectと言う箱に、部品(Component)を入れるイメージですかね
    /Prefab/PLAYERのinspectorにSpriteRendererがあると思いますが、
    これもcomponentになります。スプライトを表示するコンポーネント。
    その他に「当たり判定」「物理演算」「inputsystem」や
    上記で作成したプログラムもObjectのコンポーネントになります。

  • 上記プログラムを各GameObjectAddComponentしていきます。

PLAYERへのInputSystem定義
  1. MainGameLoop Object の inspector 内のAddComponentを選び、
    MainGameLoop.csを設定。

  2. PLAYER Object(Prefab)のの inspector 内のAddComponentを選び、
    PlayerControl.csを設定。

  3. PLAYER Object(Prefab)のの inspector 内のAddComponentを選び、
    PlayerInputを設定し、PlayerInputの項目、
    ActionsMainGameInput
    DefaultMapPLAYERを設定します。【6.】で作成した
    MainGameInputをコンポーネントします。
    これで、inputsystemをPLAYERObject(Prefab)に定義しました。

  4. プログラムFileをinspector内にドラッグ&ドロップしても設定できます。


【11.PLAYER表示・WASD移動Program】

  • MainGameLoop.csではPLAYERの表示処理

  • PlayerControl.csでは、PLAYERの移動処理
    のプログラムを書いていきます。

[MainGameLoop.cs]

MainGameLoop.cs
  • ⓵でPLAYER(Prefab)を受け取るGameObuject型の変数
     PLAYER_OBJを用意。PLAYER(Prefab)の受け取り方は別途。

  • ②でInstantiateに、PLAYER_OBJ、PLAYER_POS(表示座標)
     Quaternion.identity(無回転)を渡し表示

  • Instantiateは、start() 内で処理しており、
     start()は,MainGameLoop Objectが有効化された時、
     一度だけ行われる処理になります。

  • 注意点として、Instantiate()を、制御してないループ処理や
     void Update()に定義すると大量表示され最悪フリーズします。

[PlayerControl.cs]

PlayerControl.cs
  • ⓵using UnityEngine.InputSystemを定義し
     プログラムで、InputSystemを使用できるようにします。

  • ②ActionのMOVEを受取る変数定義
     ACTION_MOVE変数は、ActionMapsの"PLAYER"から
     Actionの"MOVE"を取得します。

  • ③PLAYER(Object)のComponentを取得する処理
     Objectに定義しているComponentをプログラムから
     参照する場合、GetComponentを使用します。

  • ④ActionのMOVEを受け取る。

  • ⑤start()内[毎フレーム処理]で最新の値をポーリングします
     Actionの"MOVE"で設定した2DVector内のUP/DOWN/LEFT/RIGHT
     で、定義したキーの状態が、moveDirection変数に渡されます。

  • ⑥PLAYERの移動処理
    PLAYER Objectの座標(X、Y)に
    "moveDirection"、"PLAYER_SPEED"、"Time.deltaTime"
    を掛けた値を、加算しています。

MainGameLoop.csとPlayerControl.csへのプログラム記入が、
終わったら、ファイルをセーブしてUnityに戻ります。


【12.PLAER Prefabセット】

MainGameLoopオブジェクト

MainGameLoopオブジェクトのInspectorMainGameLoop.cs
PLAYER_OBJが表示され、空白にPrefab化したPLAYERを定義。
定義方法は、空白右の+を押してPLAYERを検索して定義します。
Prefab化PLAYERを空白にドラッグ&ドロップしても定義できます。

これですべての準備が出来ましたので実行確認していきます。


【13.Unity再生ボタン・BuildAndRun】

Unity上での実行(Debug)
  • Unityの中央上部にある再生ボタンを押したら、
    UnityのGameウインド上で実行されます。
    キーボードのWASDでPLAYERが移動しますので確認ください。
    ※もし動かない場合は、Gameウインドがアクティブに、
    なっていないので、クリックして見てください。
    続いてWEBブラウザでの実行を行います。

[Webブラウザ実行方法]

  • まず、build用フォルダを作成します。
    \2D_PLAYER_TEST_01 直下に\Buildフォルダを作成します。
    \Build 内に \WEB_TESTを作成します。
    ※必要なければ無視して下さい。

BuildProfiles
  1. UnityメニューからFile -> Build ProFilesを起動

  2. PlatformsWeb [Active]になっているか確認。

  3. BuildAndRunボタンをクリックし、
    フォルダの選択が出たら、 \WEB_TESTを選んでビルドが開始されます

  4. ビルドは、PCスペックによっては、時間がかかります。

Webブラウザ実行

上記の様に、ブラウザに表示されキーボードのWASDでキャラが動いたら
完了となります。

【14.InputSystemへのデバイス追加】

ProjectSettings InputSystemデバイス追加
InputActionEditor デバイス設定
  • ProjectSettingsにてInputSystemデバイス追加、ここではGAMEPAD追加

  • InputActionEditorで追加したデバイスの割り当て、
    2DVectorにGamePadの十字キーと左スティックを設定すると、
    GamePadでもPLAYERを簡単に動かせます。

■最後に

不明瞭な箇所等、多々あったと思いますが最後まで読んでいただき
誠にありがとうございます。 
[Unity6] インプットシステム&プレファブ 2Dチュートリアルの
動画版をYoutubeにUPしております
Note版と多少説明の順番や動いている説明もありますので
宜しければご確認ください。

【Youtube】

【Unity】InputSystem&Prefab<2Dチュートリアル>


いいなと思ったら応援しよう!

この記事が参加している募集