質問: timeCount + Time.deltaTime; if (rollJump) { rb.AddForce(moveForward * rollSpeed); } } ### 試したこと 上記のRollRとRollLでのAddTorqueを使った回転の方法 Mathf.Absを使ってRotationに直接値を代入する方法 ### 補足情報(FW/ツールのバージョンなど) 上記のRollRとRollLでのAddTorqueを使った回転ならいい感じにできていると思うのですが、開発チームの上の方からPS4コントローラーの左スティックのみで処理を行ってほしいとのことでした。 新しくボタンを追加するのはなしということでお願いしたいです。 まだ描き足りないところはあると思いますが、質問していただければお教えしますので宜しくお願い致します。![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/1557c41b327260588e3b59af3fcb1a2b.jpeg) わかりにくいとご指摘があったので自分の中での目標を図で表しておきました。拙くて申し訳ないです。
回答: 説明図ありがとうございます。 このプレイヤーは長辺を軸としてピッチ回転しているのですね。 スティックを前に倒した量に応じて、キャラの前方向(カメラではなく)にAddForceして加速してあげます。 左の図の矢印方向です。※このベクトルはキャラクタのピッチ回転に影響せず地面と水平である必要があります。 と同時に、スティックの横方向に倒された量に応じて、プレイヤーにヨー方向 (図でいうと垂直方向です。先程の進行方向ベクトルとピッチ軸(長軸)との外積でそのベクトルがわかります) にトルクを加えてキャラの方向を変えていきます。 おそらくそうすると目標の動きになると思います。 スティック横でキャラの方向回転(ロール)、スティック縦で前へ進む、の運動の合成です。 わかりにくくてすみません。