Unityの単位系を理解してなかったせいでオブジェクトの動作がおかしかった件

ラノベみたいな記事タイトルですが書いてある通りです。
ココのコイン落としを作っていてずっと気になりつつも放置していたのがコインの挙動。

どうにも動きがフワフワしていて現実味が無いんです。
ゆっくり動いて、ゆっくり落ちて、ゆっくり止まる。
Friction(摩擦)を下げるとスッと動くようになりますが、今度は氷の上を滑るようになって止まらなくなります。
で、Drag(空気抵抗)を上げるとキレのある止まり方になりますが今度はゆっくり落ちるようになる…という感じでお手上げ状態でした。

で、仕方ないのでちょっとググってみました。

…今まで何も考えずにUnityでゲームを作っていたのですが、当然の事ながらUnityにもちゃんと単位系が定義されてたんですね。

これ、コイン落としゲームに使っているコインのPrefabなのですが、Scaleが0.7とあります。まさかこれ、メートル単位とは知りませんでした。Scaleはぼんやりと倍率的な何かを指すのかと思ってました。

これは同じくコインのRigidBodyの設定ですが、Massってキログラム単位だったんですね!

どうやら0.7mで2キログラムのコインを使ったコイン落としゲームを作っていたようです。
Positionもメートル単位なので、カメラとゲーム台の距離も12.5メートルもありました。
2cm程度だと勝手にイメージしてたコインが35倍もある世界なので、その世界で生きているココは同縮尺だと1.45m×35で50mくらいありますね。

つまり、コインの挙動がおかしかったのではなく、スケールの問題だったようです。
ミニチュアのビルが倒れるのは一瞬ですが、本物のビルが倒れるのを遠くから見るとゆっくりに見えますよね。あれと同じ事が起きていたようです。

で、どうやって取り敢えずコインの挙動をマシにするかというと、今から全てのモデルを修正するのは大変すぎるので、重力を大きくする事にしました。
これで見かけ上のフワフワ感はだいぶ収まるはずです。シミュレータではなくゲームなので多少嘘のある動きでも問題ありません。

ゲーム全体の重力を変更するには、
Edit→Project Settings→Physicsで出てくる、InspectorにあるPhysicsManagerのGravityのY値を-9.81から変更すればOKです。

やや動きに違和感もありますが、とりあえずこれで様子を見てみます!

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
Loading...

    コメント