I am fish の PV を見ていて Rigidbody の重心を変更するにはどうやるのか気になったので記事にしてみました
Rigidbody.centerOfMass
調べてみたところ、重心を変えるのは簡単そうで
Rigidbody.centerOfMass
に値を入れてやるだけでいけそうです
Rigidbody-centerOfMass - Unity スクリプトリファレンス
再生中に重心を変えてみるテスト
Editor上でのみですが、centerOfMass を変更することで起き上がり小法師っぽい動きができました
using UnityEngine; [RequireComponent(typeof(Rigidbody))] public class ChangeCenterMass : MonoBehaviour { #if UNITY_EDITOR private void Reset() { _rigidbody = GetComponent<Rigidbody>(); } private void OnValidate() { _rigidbody.centerOfMass = _centerMassPosition; // Start時に動いてない状態だとSleepになるので解除してあげる if (_rigidbody.IsSleeping()) { _rigidbody.WakeUp(); } } private void OnDrawGizmos() { Gizmos.DrawIcon(transform.position + transform.rotation * _centerMassPosition, "center"); } #endif [SerializeField] private Rigidbody _rigidbody; [SerializeField] private Vector3 _centerMassPosition = Vector3.zero; }