今まで手抜きでローリングをダッシュのボタンを分けていましたが、ダークソウルのように、xボタンだけで ダッシュとローリングをできるようにします。動作が怪しげですが、ついでに同じボタンでジャンプもできるようにします。
実装
ボタンを押してすぐ離すとローリング、ボタンを長く押すとダッシュ。ダッシュ中に素早くボタンを押し直すとジャンプします。ジャンプのときもボタンをすぐ離す必要があります。(ダークソウルと動作が異なります)
PlayerCtrl.cs
変数の追加です。コメントに書いてある通りです。
ファイルの末尾のメソッドですが、上記2つのタイマーを進めます。
本体がここから本体です。
ボタンを押したタイミングで、1つ目のタイマーを開始します。0.3秒以内にボタンが離された場合、条件によって処理を行います。
- ダッシュ中ならジャンプ
- 実装していませんが、スティックをたおしていなければ、バックステップ
- スティックを倒していれば、ローリングをします。
0.3秒以上ボタンが押し続けられていたら、ダッシュの処理を行います。
ボタンが離されたタイミングで、もう1つのタイマーを起動し、ボタンが離されて0.4秒以上経過したらダッシュをやめます。0.4秒以内にもう1度ボタンを短く押されたらジャンプになります。短い時間でなくてもジャンプする方が良ければ else の中に処理を追加してください。(アニメーションもつけていないので面倒なので書きませんでした。)
不具合の応急処置
ローリングやジャンプを試しいたら、壁に向かってジャンプすると動けなくなる問題があったので、以下のような応急処置をいれました。
バタバタとローリングをやっていると、キャラクターの向きが変わるのが遅すぎて、思った方向にローリングができない場合があるため、回転速度を上げました。操作性を重視するならもう少し速い方がいいかもしれません。ただ、速くしすぎるとアニメーションがぎこちなくなります。
PlayerMove.cs
ファイル
おわりに
次回 IKを使って、両手持ち武器の手の位置を合わせる方法について書きます。