16/08/28 04:25:12.65 OAHf0gRx.net
いや、Rigidbodyの挙動とtransform.Translate()は共存できるよ。
Update()でTranslate()をデルタタイムで使えばRigidbodyの物理挙動+
Translate()の移動が行われる。
問題なのはTranslate()での移動ではRigidbodyのVelocityは変わらなくて
だからTranslate()で衝突しても速度0の状態での衝突扱いになる。
あと速度自体への影響はでないけどFixedUpate()で
RigidbodyのMovePosition()を使ってやると衝突補間に便利な場合がある。
そこまでは必要ない場合でもtransformでの操作より
Rigidbody.positionを使う方が計算が一部省略されて
動作が多少なりとも軽くなる場合がある(複数のColliderを付けてる場合など)
Rigidbodyを使っている場合AddForceで操作できれば物理的挙動としては
それが一番整合的になるのは確かなんだが実際には
それでゲーム的操作を行うのは難しい、場合がある。
だからRigidbody.MovePosition()みたいな関数も用意されてる訳で。
>>138の話は多分transform.positionに直接値を放り込んでるからで
それだとRigidbodyが行う全ての操作が上書きされるからRigidbodyの動作は
全く反映されない、ということなのではないかな、と推察されるわけだ