質問: GetComponent(); } // Update is called once per frame void FixedUpdate () { if (getDistance()
回答: **「どのような動き方をさせたいのか」**によります。 例えばマリオやモンハンのような「物理挙動に見えるけど実際は物理的ではない動き(物凄く高い位置から落ちてもバウンドしない、何とぶつかっても弾かれる飛距離が同じ等)」をする場合、Rigidbodyは当たり判定のみに用いて(=isKinematicをオンにして)、動きは自分で作った方が狙った見た目にしやすくなります。 一方、コインゲームのような「自然な物理挙動をする必要がある動き」の場合は、素直にRigidbodyの物理演算を用いた方がいいです(というか自前の計算で行おうとしたら大変なことになります)。 負荷も考慮するとRigidbodyは極力付けないに越したことは無いのですが、衝突判定をする以上は必ず必要になってくるので、そこは設計次第となるでしょう。 サンプルのソースコードでは、Lookatは一定距離内なら常時発動になっているので、プレイヤーの方を向き続けるのは当然です。(Constraintsは物理演算による回転を封じるだけなので、スクリプトによる回転はそのまま受け付けます) 回転も封じたいなら、「衝突している間(あるいは衝突して一定時間)はLookatを呼ばない」という処理を挟む必要があります。