[Unity] Unityにimportした人物(fbx)をキーボードで歩かせ/走らせる

ここでは標準アセットを用います。
「Assets」>>「Import Package」>>「Characters」。



そうしておいて、デフォルトのコントローラーを拝借します。人物を選択してから、「Inspector」の「Animator」の所にある「Controller」の丸印をクリックして、「Third~」を選択。

この時点で結構ちゃんと動いてくれます。キーボードの矢印キーの方向に走ります。
ただしこのままだと走ることしかしません。


ここで「Edit」>>「Project Settings」>>「Input」


を見てみると、Inspectorにこのように表示されます。


同じ動作が2つあるように見えるのは、joystick分とキーボード分が別だから。 
ちなみにAxesのところにSize「18」となっていますが、これはメニュー数です。試しに「19」にしてみると、一番下の「Cancel」が複製されます。逆に数字を減らすとメニューが削除されます。これで自分の好きなように動作をセッティングできます。

とりあえず歩かせたい場合、
「ThirdPersonCharactor」の中の、
  if (move.magnitude > 1f)
  move.Normalize();
を、
  if (move.magnitude > 0.5f) {
move.Normalize();
move *= 0.5f;
}

にすると歩くようになります。



管理人はBダッシュ世代なので、「shift」+「矢印」でダッシュさせようなんて考えがまず浮かびますが、おそらくそれは以下のようにしてできます。

上で「ThirdPersonCharacter」内のmoveベクトルの大きさ上限を0.5にして歩かせましたが、そんな風に上限1(走る)と上限0.5(歩く)の二つの挙動を用意し、InputManagerに「dash(Positive Button = "shift")」を登録して、「horizontal」や「vertical」と同時に押された時に挙動をスイッチすれば良いのです
(一番単純には、

//ThirdPersonCharacterのprivate void FixedUpdate()のなか
if(CrossPlatformInputManager.GetButton("dash") && m_move.magnitude > 0.5f)
{
m_move.Normalize();
m_move*=0.5f
}
m_Character.Move(m_Move, crouch, m_Jump);


のような感じで。やってないけど、GetButtonDownとかだと押した瞬間だけ動作して、shiftの押しっぱなし検知してくれないような気がする)。



コメント

このブログの人気の投稿

旧バージョンのiMovieを入れる方法

TWRP公式サポートされてないAndroid端末でシステムインストールした話

[UTAU] Garagebandで作ったボーカルメロディーをUTAUに読ませる