記事作成 2019年7月
PlayMaker 1.9.0 / Unity 2018.2.6f1
2Dモードでの、キャラクターの移動についてです。
3Dと違って、2Dには標準のキャラクターコントローラがなく、キャラ移動については
苦労している人も多いように思います。
実際、PlayMaker上でも様々な方法があるはずですが、おそらく一番簡単と思われる方法で、
方向キー、ジョイパッドでの8方向移動を実現してみます。
上方から見たシューティング、あるいはRPG風のフィールド移動のようなものへ
使う感じでしょうか。
2Dスプライトを作成します。画像は適当に。
インスペクタで Rigidbody 2D を追加し、Gravity Scale を 0 にします。
これで、重力の影響を受けて落下することを防ぎます。
操作キャラクターに状態遷移を設定します。
作成した状態 「移動」 に、3つアクションを並べます。2つの [Get Axis] で、方向のインプットを
取ります。Multiplier は入力レンジの広さ(ここでは-2~2)の設定ですが、実際、移動スピード
とみなして構いません。(Horizontal、Verticalは文字を打ち込んでください)
次に、[Set Velocity 2d] で入力値に応じた力を、キャラクターに設定します
これで、方向キー、WASD、ジョイパッドで 8方向に移動します。
□ キーとジョイパッドの操作感の違い。
実際に操作してみるとわかるのですが、方向キー、WASDでの移動は、Multiplier の設定値
まで、数値は徐々に変化し(-2~2)、ジョイパッドでの操作では一気に数値が切り変わります。
(-2、0、2)。
つまり、キー操作では、設定スピードまで加速しつつ変化し、ジョイパッドではボタンに応じて
常に一定の設定スピードで切り替わります。
これは、unityの設定なので、仕方ないのです。キー操作で即座に切り替えるには Axisの+ -
で判定して、数値を入れるとか、何かしらの工夫が必要です。
(追記 2020 / 08 / 24 )
エコシステムで入手できる、[ GetAxisRaw ] アクションを使うと、キーボードの方向指定でも
( -1 0 1 )のように値を取れ、途中の「徐々に変化」をなくすことができます。
エコシステムには他にも [ AxisRawEvent ] など (Axis) (Raw) の検索で見つかるアクションが
あります。[PM] Ecosystem (エコシステム参考記事)
----------------------------------------------
@ おまけ
このままでもいいのですが、十字キーでキャラクターを操作する で使った方法で
スピードに変化をつけてみます。
「移動」 からマウス左ボタンダウンで、「もっと速く移動」 へ遷移します。
「もっと速く移動」 は 「移動」 をコピーしたものですが、下線の部分が違います。
移動スピードが上がり、左ボタンアップで 「移動」に戻ります。
このように操作できるでしょうか。
移動方向に応じて画像を切り替えたい場合は、Axisからの値、入力キー、もしくは
操作キャラの Velocity などを Get して分岐。画像(あるいはアニメーション)設定
という流れになるかと。いずれ記事にするかも。
参考記事 [2D] スプライトの切り替え
また、2Dモードでの接触やオブジェクトの移動などは、3Dと同じ要領でできます。
これまで3D用の記事内で使ったアクション [Trigger Event] などには [Trigger2D Event]
等、対になるような2D用のアクションがあり、コンポーネントもまた 「Rigidbody 2D」など
分かりやすいです。
今回のHowtoは、公式フォーラムの投稿にあったものです。公式フォーラムは参考になる
トピックも多いので覗いてみると面白いかもしれません。
https://hutonggames.com/playmakerforum/index.php?topic=18361.0
0 件のコメント:
コメントを投稿