ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

今日の進捗

DE10が比較的滑らかにカーブを通過するようになった。

こいつのチューニングはきりがないので一旦やめて、次はレールの継ぎ目で音が出る仕掛けと、レールを簡単に繋げるための仕掛けを実装しよう。

UnityのConfigurable Jointでバネを設定する方法

UnityでConfigurable Jointを使って単一方向にのみ動くバネを作ろうとして、問題にぶつかったので回避策を含めメモ。

UnityでSpring Jointを使うと全方向に動くバネができる。しかし、これはサスペンションなどの用途には向かない。このような場合はConfigurable Jointを使えば可動軸を指定したSpringを実装できる。・・・はずだった。

しかし、なぜかバネとして動いていないように見える。さっそく簡単なSceneで検証してみたところ、本当に動いていなかった。そこでバネに関連しそうなパラメータを色々弄っていたところ、Linear Limit中のLimitが0より大きいときにバネとして動くことが判明。Unityのマニュアルを見ると、パラメータの説明には該当情報が無いが後半の「弾みとバネ」に、「Spring プロパティーで 0 を上回る値に設定すると」とこっそり書いてあった。そういう大事なことは、パラメータ説明にも書いてくれ。以下、検証動画。

鉄道車両の車輪をCapsleColliderで模擬してみる(カーブ通過編)

ふと、踏面だけでカーブを通過できるか試したくなってきたのでやってみた。

結果:いける。

課題:上下動がやはり目立つ。おそらく、カーブレールのポリゴンが原因。直線の組み合わせでできているため、理想の曲線から内外にはみ出る箇所があり、その結果CapsleColliderの球面に当たる場所が変わり上下動している。

課題の対策:サスペンションをつけるか、CapsleColliderを諦める。

対策どうしようかなあ。今、レールの継ぎ目を通過する音を、車輪の上下方向加速度をトリガーに鳴らしているんだけど、これとポリゴン起因の上下動を区別できないっぽいのよね。CapsleColliderによるカーブを諦めるのが最適解か?

Unityで設定項目をまとめる方法

Unityで開発を進めていると、Inspectorで設定可能な項目がだんだん増えてきてじゃまになってくる。そして、大半の設定項目は実際使用頻度が低いので普段は見えなくてもいいんだけど、たまにいじるから消したくはない。設定項目をまとめて表示・非表示できる方法は無いのかな~と思ってUnityのマニュアル眺めてたら、ありましたよ。しかも何度も見ていたWheelColliderのチュートリアルに。

Wheel Collider チュートリアル - Unity マニュアル

f:id:donadonasan:20190813092014p:plain

設定項目を開く・閉じる

これですよ、これ。この三角の開ける・閉めるマーク!これがあれば、めったに使わない設定群をグループ分けして、使わないときはコンパクトにまとめることができる。

やり方はかんたん、2ステップ。

Step 1. 設定項目をまとめたクラスをSystem.Serializable属性付きで作る。

A class representing an group of data

Step 2. 設定項目をまとめたクラスのオブジェクトをpublicメンバとして加える。

An example using the grouped data

WheelColliderのチュートリアルでは設定項目をまとめたクラスを独立させているけれど、以下のようにローカルなクラスにすることも可能。

An example using local class which groups some dat ...

この例だと、Inspectorの表示は以下のようになる。

f:id:donadonasan:20190813123532p:plain

グループを開いた状態

f:id:donadonasan:20190813123613p:plain

グループを閉じた状態

これでプロパティの整理が捗るはず。

鉄道車両の車輪をCapsleColliderで模擬してみる(カーブ通過編)

ふと、踏面だけでカーブを通過できるか試したくなってきたのでやってみた。

結果:いける。

課題:上下動がやはり目立つ。おそらく、カーブレールのポリゴンが原因。直線の組み合わせでできているため、理想の曲線から内外にはみ出る箇所があり、その結果CapsleColliderの球面に当たる場所が変わり上下動している。

課題の対策:サスペンションをつけるか、CapsleColliderを諦める。

対策どうしようかなあ。今、レールの継ぎ目を通過する音を、車輪の上下方向加速度をトリガーに鳴らしているんだけど、これとポリゴン起因の上下動を区別できないっぽいのよね。CapsleColliderによるカーブを諦めるのが最適解か?

鉄道車両のフランジをカプセルColliderで模擬してみる(確定編)

CapsuleColliderを使う実装、スプリングやら何やらを試してみたけれども結局動きがなめらかにならず。そこでもう一度WheelColliderを使ってみたら、うまく行った。どうやら、前回はサスペンションを含む向きの設定を間違えていたぽい。ただ、こんどは上下動がひどくなった。車輪の転がりもWheelColliderにしてしまおうかな。

鉄道車両のフランジをカプセルColliderで模擬してみる(特性調査編)

無事カーブレールを走れるようになったので、CapsuleColliderの設定値とカーブ走行の様子の関係を調べてみた。

  • CapsuleColliderの横方向位置:レールとの距離が近いほど、カーブで引っかかりやすくなり脱線する。レールとの距離が遠いほど安定はするが、見た目脱線する。
  • CapsuleColliderの直径:円筒側面とレールとの距離を一定に保つ限りは、直径自身にはカーブ通過性能との直接の関係はなさそう。ただし、大きくするとCapsuleとレール底面Meshが当たってしまい不安定になるため、小さい方が良いように見える。
  • CapsuleColliderの高さ:高すぎるとレール底面Meshにあたり、低すぎると車輪が跳ねたときに当たり判定がなくなって脱線する。底面Meshに当たらない程度に高くすべし。