質問: null; Debug.Log("unparenting"); } } } } ```
回答: 補足ありがとうございます。 まず↓を押した時については、プレイヤーのRigidbodyがスリープしている可能性が高いです。 詳しくは「[Unity] Rigidbodyのスリープ問題|ftvlog」をご覧ください。 (ちなみに↑を押した時は床に衝突されたことによりスリープが解除され、通常の物理判定(=押されて動く)が行われているものと思われます) ←→を押した時については、IsKinematicがオフなのが恐らく原因です。 RigidbodyのIsKinematicがオンならtransform.positionでの移動ができますが、オフならできません。 (今回の場合、親である床の移動をtransform.positionで行っている=子であるプレイヤーの移動もtransform.positionで行っている=プレイヤーはIsKinematicがオフなので動かない、という流れです) なのでプレイヤーのIsKinematicをオンにすればいいのですが、こうすると今度は重力が効かなくなります。 結論としては、以下をお試しください。 ・通常時はIsKinematicをオフ ・床と接触した時にIsKinematicをオン ・床と離れた時にIsKinematicをオフ、スリープ解除 なお、今回は問題無いと思いますが、衝突するもののIsKinematicとisTriggerの状態により、衝突判定が発生したりしなかったりします。 条件は「UnityのPhysicsについて - プログラムの素」をご覧ください。