Unityでレースゲームを作る(2)

 

 

 過去記事はこちら

shussy8.hatenablog.com

 

 

 

 

 

 さて…

というわけで2回目です。今回はきちんと動くところまで仕上げたいなーと思っております。

とりあえず他のスクリプトから読み取れるようにsin とついでに angleもpublic属性にする。

そして、車本体のスクリプトを作成する。

今回はCarDriveという名前で作ってある。

 

ハンドルを握ったらエンジンが掛かるようにしたいのでdrivehandに戻って両手の

両手のGrabStrenghtが一定以上になればエンジンが掛かるようにする。

 

              if (leftHand.GrabStrength>0.7 && rightHand.GrabStrength >0.7)

           {

               readyOK = true;

           }

こんな感じかな

そして、CarDriveに戻ってとりあえず車にupdate内で前向きと横方向にはsin*倍率を加える。これで前に進みながら手にあわせて曲がってくれるはずだ。

var v3 = new Vector3(-driver.sin * speed, 0, 1 * speed);

transform.Rotate(v3);

 

実際に運転できるのか実行してみたところ、 突然意味の分からない動きをし始めたww。ゲッダンしとるwww

 

30分ほど悩んだところ、どうやらというかほぼ確実にLeapmotionと車自身の衝突判定がかぶってしまって、常に反発状態になっていた。おもしろい。

というわけで車の当たり判定を地面のみにして再チャレンジ。今度はうまくいくか…?

やってみると、なんか動くけど2次元のレースゲームみたいな動き。まあそりゃそうなるか。ただその方向に力を加えているだけなので、車自体は回転しない。さあてどうする。

 

というわけでdrivehandを少し改造して角度も他のコンポーネントから取得できるようにしてその角度で曲げてみるようにした。

なんかそれっぽくなった。

 

transform.Rotate(0f,0f,driver.handsAngle/angledivide);

 

angledivideは角度調整のためにpublicとして用意してある。

 

今回はここまで

Github

https://github.com/syusi/RaceForLeap