実現したいこと
unityでaddforceを使って車を操作できるようにしたい。
wheelcoliderは実現が難しそうであったので確実に解決できそうな場合を除いてaddforce
(またはその他のもの)で実現したい。
実現したいことは
- スリップしないようにしたい
- 曲がるときにしっかりグリップしてほしい
- 曲がり方をよりリアルにしたい
です。
発生している問題・分からないこと
現在発生している問題は以下のとおりです。
- 摩擦が足りないのが原因なのか不明だがかなりの頻度でスリップする
現在、地面と車のタイヤ部分に動摩擦1、静止摩擦0に設定しています。
特に坂道の部分ではスリップが激しくなる。 - 曲がるときに車の進行方向ではなく慣性に従って進んでしまう。
- 不自然な曲がり方をする。
曲がらせ方は現在は車本体を入力に対して回転させているだけです。 - ※追記 車が斜めの状態で地面に落ちた場合不自然な角度で静止したまま動作する。
解決済:Rigidbodyの設定でX軸の回転が固定されていた。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5 6public class adf_car : MonoBehaviour 7{ 8 private Rigidbody rb; 9 public float speed; //速度 10 public float Rrot; //右回転角 11 public float Rfric; //右グリップ力 12 public float Lrot; //左回転角 13 public float Lfric; //左グリップ力 14 public float brake; //ブレーキ 15 16 17 18 //Vector3 force = new Vector3 (0.0f,0.0f,1.0f); 19 20 // Start is called before the first frame update 21 void Start() 22 { 23 rb = GetComponent<Rigidbody>(); //rigidbodyのコンポーネント取得 24 } 25 26 // Update is called once per frame 27 void FixedUpdate() 28 { 29 //前進 30 if(Input.GetKey(KeyCode.UpArrow)) 31 { 32 rb.AddRelativeForce(Vector3.forward * speed,ForceMode.Acceleration); 33 } 34 35 //右回転 36 if (Input.GetKey(KeyCode.RightArrow)) 37 { 38 transform.Rotate(0f,Rrot*0.1f, 0f); 39 //rb.AddRelativeForce(Vector3.right * Rfric, ForceMode.Acceleration); 40 } 41 42 //左回転 43 if (Input.GetKey(KeyCode.LeftArrow)) 44 { 45 transform.Rotate(0f,-Lrot*0.1f, 0f); 46 //rb.AddRelativeForce(Vector3.left * Lfric, ForceMode.Acceleration); 47 } 48 49 //ブレーキ 50 if (Input.GetKey(KeyCode.DownArrow)) 51 { 52 float Vel = rb.velocity.magnitude; 53 if (Vel>=0f) 54 { 55 rb.AddRelativeForce(Vector3.back *brake , ForceMode.Acceleration); 56 //Debug.Log("反応してっぞ"); 57 } 58 } 59 60 } 61} 62
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
動摩擦を1.5にすると車が動かなくなってしまう。
wheel coliderではスピードを出すと曲がることができない。
目標レベルと現在の到達度
基本的に不自然すぎる動きでなければ問題はないです。実現したい目標レベルは以下のとおりです。(上から優先順位が高い)
-
前進する
急発進のような不自然な加速ではない。レースゲームにするので最高速度は速めに。
現在実現している処理はaddforceで動作させる方法と -
左右に曲がることができる
通常の車のように徐々に曲がる。
現在実現している処理はrotateで角度を変化させて曲がっている。 -
スリップせずにタイヤが地面にグリップできる。
高速時にスリップしない。現在は車のmass:1500,最高速度:20.5fの時走行中に回転するようなスリップは起きない。
###補足
特になし