Player

プレイヤーはゲームの中心なので、エンジンにはカスタマイズ可能な機能がたくさん用意されています。
始めるには、BoxCollider2DとPlayerコンポーネントを追加する。
Playerクラスはinput、abilities、world collision設定を処理します。
また、Unityを満足(w)させるためにRigidBody2Dを追加し、Body TypeをKinematicに設定する必要があります。

Method
BlockInputs(bool value)trueの場合、プレーヤーの入力をブロックする。

Inputs

システムには入力を扱う2つの方法がある。
デフォルトでは、システムはキーボード、マウス、UIボタンで動作する古い入力システムを実装している。
もう1つは、new input systemとのインターフェイスです。
どちらの方法でも、InputButtonSOを使う必要があります。InputButtonSOは、入力を扱う両方の方法のラッパーとして機能するスクリプト可能なオブジェクトです。
InputButtonSO は、Create New Input で入力を作成するたびに自動的に作成され、AssetsFolder/Inputs に配置されます。
UIボタンやその他の類似機能を設定したい場合は、このフォルダを時々参照する必要があります。

システムは「移動」「ジャンプ」「発射」のための共通入力を作成し、「左」「右」「ジャンプ」の入力が常に行われていることを想定しています。
インスペクタに表示されている入力は、InputButtonSOに直接リンクされています。

デフォルトの入力システムの入力には、他の入力にバインド(結びつける)する機能もあります。
例えば、ジャンプ入力が他の入力にバインドされている場合、他の入力がtrueになるたびにジャンプ入力もtrueになります。
入力をバインドするには、下の三角形のトグルをクリックして、入力を追加していきます。
そしてInputButtonSOの参照を設定する必要があります。
これらの入力は、実行中にKeyboardとMouseの値を変更することができ、システムはPlayerPrefsを使用してこれらの変更を自動的に保存します。
新しい入力システムを使用している場合、これは機能しません。

Inputs
Name and Type入力のタイプ。
キーボードかマウスを選び、その値を設定する。
Bind Inputsバインドされた入力への参照。

Note
削除ボタンを押すと、プレーヤーの入力リストから入力が削除されます。
削除するには手動で削除する必要があります。
既存の入力をドロップエリアにドラッグ&ドロップすることもできます。

InputButtonSOMethods
ButtonPressed()押された入力が真に設定される。
ButtonHold()入力ホールドが真に設定される。
ButtonReleased()入力がリリースされた場合はtrue、入力がホールドされた場合はfalseに設定される。
Holding()入力が保持されている場合はtrueを返す。
Pressed()入力が押された場合にtrueを返す。
Released()入力がされていなければtrueを返す。
OverrideKeyboardKey (KeyCode newKey)キーボードのキーを上書きする。
OverrideMouseKey (int newKey)マウスキーを上書きする。
1=左.
2=右.
3=中央.

また、いくつかのプレイヤーアビリティには、ボタントリガーという設定があることにお気づきでしょう。この設定により、入力がいつ true になるかを選択できます。

  • On Hold (ホールド時)
  • On Press (押下時)
  • On Release (リリース時)
  • Always (常に)
  • Never (常にtrueにならない)
  • Active (アクティブ)

AlwaysとNeverは主にAI武器に使用されます。
Neverに設定すると、プレイヤーの入力によって武器が誤って発射されるのを防ぐことができます!
Activeは、メソッド呼び出しによって入力がHoldまたはPressされていることを意味します。
それ以外の場合は、Hold、Press、Releaseを使用します。


new input systemとのインタフェースを使うために、まだインストールされていない場合は、Packet Managerからパッケージをインストールしてください。
デフォルトでは、Flare Engineは古い入力システムを使うので、それを無効にするとエラーが出ます。
そこで、Project Settings/Player で Active Input Handling を Both に設定してください。

次に、PlayerのgameobjectにPlayer Inputコンポーネントを追加し、InputActionAssetへの参照を設定します。
Demo1にはすでにこの設定があり、Demo/Assetsフォルダにこのアセットがあります。このアセットには、一般的なコントローラにマッピングされたデフォルト値がいくつか含まれています。
しかし、コントローラによってはデフォルト設定が機能しない可能性がまだ十分にあり、その場合はInputActionsを開いて特定のコントローラ入力をバインドする必要があります。
その場合は、InputActionsを開き、特定のコントローラの入力をバインドする必要があります。このプロセスに慣れるには、Unityのドキュメントを参照する必要があります。

次に、Player InputでBehaviorをInvoke Unity Eventsに
設定します。アクションマップと同様に、イベントフォルダアウトを開きます。今回はPlayerとします。そして、InputButtonSOをこれらのイベントに接続し、以下のメソッドを呼び出します。

New Input SystemMethods
InputPerformed()押された入力がtrueに設定される。
InputPerformedHold()入力ホールドがtrueに設定される。
InputCancelled()入力がリリースされた場合はtrueに設定され、入力がホールドされた場合はfalseに設定される。

例えば、ボタンが押された時に入力を動作させるには、ジャンプ入力から InputPerformed()を呼び出します。
しかし、方向キーのようにボタンを押したままにするような場合は、InputPerformedHold()とInputCancelled()の両方を呼び出します。
場合によっては、希望する効果を得るために3つのメソッドすべてを呼び出すこともあります。この設定を完了すると、新しい入力システムがこれらのメソッドを呼び出すようになります。


Priority

プレイヤーが複数のアビリティを有効にしている場合、優先順位を割り当てる必要があります。つまり、2つ以上のアビリティが同時にアクティブになった場合、優先順位の高いアビリティが実行され、他のアビリティはキャンセルされます。これは厄介な状況を防ぐためです。
たとえば、プレイヤーが壁を登っているとき、銃器を撃つアビリティを持っていてはいけません。この場合、射撃アニメーションが壁の保持を考慮していないと、奇妙に見えます。
プライオリティ・システムを使えば、これを防ぐことができます。

しかし、アビリティの共存が必要な場合もあります。
システムはこのような状況のために例外を実装しています。
どのアビリティも例外を追加することができ、それによって指定されたアビリティを同時に実行することができる。
たとえば、プレイヤーが銃器を撃つとき、「銃器」アビリティに例外として「ジャンプ」アビリティが含まれていなければ、プレイヤーは弾丸の発射とジャンプを同時に行うことができません。これを解決するには、Firearmsの優先順位にJumpの例外(Exception)を追加します。

優先順位を設定するには、優先順位のブロックをドラッグするだけです。
1番目が最優先です。

Tip
PushBackアビリティを使用する場合、最優先に設定することをお勧めします。そうすれば、プレイヤーがダメージを受けたとき、壁を登るなど、現在使用しているアビリティから離脱します。


Settings

Property
Gravity, Jumpジャンプの高さとジャンプ時間によって重力の値が決まる。これらの値はジャンプ力にも反映される。
Gravity Multiplierプレイヤーのy方向の速度が負のとき、重力の力を調整する。
Terminal Velocityプレイヤーの最大落下速度。
Raysキャラクターからワールドを検出するために水平方向と垂直方向に伸びるrAYCASTの数。
効率化のため、この数値は低くしておきます。
Climb Slopes有効にすると、キャラクターは最大斜度以下の斜面を登ることができるようになります。
Rotate To Slope有効にすると、キャラクターは地面と垂直になるように回転率に従って回転します。
Rectify In Air有効にすると、キャラクターが回転しながらジャンプして、スクエアなポジションに回転する。
Jump Through 2D Edge有効にすると、ジャンプボタンを押し続けなくても、キャラクターは自動的にエッジコライダー2Dをジャンプする。
Check Corners有効にすると、プラットフォームのコーナーがキャラクタの側面に入り込んでいるかどうかをチェックし、それを防ぎます。
Climb Slopes(斜面を登る)が有効になっている場合、キャラクタの底を通るコーナーがないか自動的にチェックします。
Use Bridges有効にすると、キャラクターは橋の上を歩けるようになります。
Use Moving Platforms有効にすると、キャラクターはムービングプラットフォームとインタラクションできるようになる。
Collide With World Onlyシステムはワールドとプラットフォームの両方の衝突をチェックする。これを有効にすると、Worldの衝突のみをチェックします。
Use Late UpdateAIのみ。
有効にすると、Updateの代わりにLate Updateが実行されます。
Crushed By Platformキャラクタが2つの硬い面の間で押しつぶされたときに呼び出されるUnityイベント。これは、キャラクタが動いているプラットフォームの上に立っているか、またはプラットフォームを持っていて、硬い表面上に移動されたとき、またはキャラクタが硬い表面に押し込まれたときに発生します。
このイベントは通常、キャラクタの死を意味し、キャラクタの位置をリセットする必要があります。
ダイナミックアクティブメソッドでワールドエフェクトを呼び出します。

Edge Collider 2D

EdgeCollider2Dを含むプラットフォームを扱う場合、ジャンプボタンが押されていれば、キャラクターはプラットフォームをジャンプして通り抜けることができます。そうでない場合、システムはプラットフォームを天井として解釈します。下ボタンが押されている場合、キャラクタはプラットフォームから飛び降りることができます。もちろん、これはジャンプとダウンの入力が同時の場合にのみ機能します。


Ability

赤いボタンをクリックして、アビリティをシステムに追加します。
どのアビリティも、そのコンポーネントから Pause メソッドを呼び出すことで一時停止できます。
便宜上、各アビリティは開発中にインスペクタで一時停止できます。


Creating An Ability

エンジンがまだ提供していない場合は、ユニークな能力を作成します。
以下のテンプレートに従ってください。

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