一人称コントローラ

記事作成 2020年10月31日
PlayMaker 1.9.0 p20 / Unity 2019.3.3f

左右キーで回転、上方(前方)キーで前進する、一人称視点のキャラクター
操作を実現します。(WASD、方向キー、ゲームパッド)

(注)記事内容を改めました。動画で操作キャラクターの前方に付いている
目標オブジェ(球)は、この記事では使用していません。

操作キャラクターの背後にカメラが付き、プレイヤーの視点と、操作感覚を
一致させます。

十字キーでキャラクターを操作する  

の記事で、キャラクターコントローラを使った移動をやりましたが 「入力キーに
応じて上下左右に動くオブジェクト」 の背後にカメラを付けただけでは、入力方向
と視点が一致せず、このような操作はできません。

そこで、左右キーで回転、上方(前方)キーで前進、という操作をPlayMakerの
ノードで組んでみます。

動画のような操作は、操作キャラに以下のステートを付けるだけで実現
できます。

-----------------------------------

シーン上のオブジェクトから説明します。Plane を拡大して地面とします。


操作キャラクターは基本オブジェクトの Cube と Sphere を伸ばしたり縮めたりして
組み合わせただけのものです。わかりやすくマテリアルで色を付けています。

本体の Cube が、3つの子オブジェクトを付けて動いているという形です。
本体の Cubeは地面にめり込まないようにします。

「Cube水色」 は前方をわかりやすく示すために付けただけのものです。
「Main Camera」は本体の後方、適当な位置を定めて子オブジェとします。

カメラからの画面はこんな感じ。

-------------------------------------

では、ノードを組んでみます。
はじめのステート「前進目標位置_設定」に、アクション[ Set Vector3 XYZ ] を置き、
作成した、Vector3変数(v3 ムーブメント)の Zの値に数値を設定します。

Z軸の+値は、この場合操作キャラクターの「前方」を示すだけです。数値は適当で
構いません。(変数作成時に値を指定していればこのステートはいりません)

次のステートに、アクション[ Axis Event ] を置き、Left Right Up の各入力で
左、右、前へイベント分岐するようにします。(当然、左右前のイベントは作っておく)


左キー入力時の遷移先「左回転」では、[ Rotate ] アクションを置き、図のように
設定します。Y angle の値で回転スピードが変わります。(左方は、マイナス値)

「右回転」も同様に設定します。(右方は、プラス値)


「前進」で本体を前方に動かします。
やり方は、何でもありですが、一番安定している?標準のキャラクターコントローラ
を使ってみます。

[ Controller Simple Move ] で始めに操作キャラの前方位置を収めた(v3ムーブメント)
を進行方向に指定。設定したスピードでその位置に向かって進みます。
[ Wait ] で 0.2秒経つと、FINISHED から入力待ちへ戻ります。

この入力待ちへ戻るまでの時間は、適当に調節して下さい。

[ Controller Simple Move ] アクションを選択したときの指示に従うと、自動で
Character Controller が付き、インスペクタで確認できます。

-------------------------------------

これで、このように動きます。


*前方に進める方法は、Add Force や Move To 等、幾通りもあります。

*回転と前進を別ノード(別オブジェ)に分ければ、調整次第で、回転しながら進む
  等の動きも実現できるかな。ちと複雑になりますが。

*動画では、キーボードで、左右前を入力しています。
   [2D] 十字キーでの8方向移動  で書いたようにキーボードでは入力が切り替わる
 までに、値の減衰、増加があり、この場合むしろ慣性があるかのような、自然な動作
 にも感じます。

 しかし、ゲームパッドでは、値の減衰、増加はなくキビキビと切り替わります。その方
 が良い場合もありますが、そこに余韻をもたせようとすると、Tween等での工夫がいる
 でしょう。

0 件のコメント:

コメントを投稿