[Unity] WheelColliderと一緒に見た目も動かしたい

公式のサンプルから引っ張って来ればおk。


WheelColliderと一緒に見た目も動かすにはどうしたらいいのか。

GetWorldPoseを使いましょう。



初見で考えがちなコード:
public class CarVisual : MonoBehaviour {

public WheelCollider wheelFL;
public Transform tireFL;
// 残りは略

void Start () {

}

void Update () {
tireFL.position = wheelFL.transform.position;
tireFL.rotation = wheelFL.transform.rotation;
// 残りは略
}
}

このコードでは、ハンドルを切った時に見た目は変わりませんし、サスペンションの状態の影響も受けません。

GetWorldPoseメソッドを使うそうです。

正解:
public class CarVisual : MonoBehaviour {

public WheelCollider wheelFL;
public Transform tireFL;
// 残りは略

void Start () {

}

void Update () {
Vector3 p; Quaternion q;
wheelFL.GetWorldPose(out p,out q);
tireFL.position = p;
tireFL.rotation = q;
// 残りは略
}
}


もし、雑な実装を行っていて、タイヤの見た目にデフォルトのCylinderを使っているならば、
横倒しになってしまうので、回転させます。
tireFL.rotation = q * Quaternion.Euler(0f, 0f, 90f);





余談:

自動メモリ管理を理解する
http://docs.unity3d.com/ja/current/Manual/UnderstandingAutomaticMemoryManagement.html


そもそもリアルタイム性のあるゲームでガベージコレクタを使う自体間違ってる気がします・・・

ガベージコレクタを気にすればするほど、エレガントな記述から離れていくんですなぁ
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : Unity

コメントの投稿

非公開コメント

プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
1253位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
219位
アクセスランキングを見る>>