Using SCL's Functions and References - darkresident55/Soft-Chimp-Locomotion GitHub Wiki
For versions 9.6 and above, with community patch support and modular motion profiles.
using SoftChimpMotion;
Teleporting should disable movement before relocation and re-enable after.
// Disable Locomotion (stops input + movement calc)
MotionSettings.Instance.locomotionEnabledState = MotionSettings.LocomotionState.Disabled;
// Move the Chimp (recommended to cache these in Awake or Start)
GameObject chimp = GameObject.Find("Chimp");
Transform teleportTarget = GameObject.Find("TeleportTarget").transform;
chimp.transform.position = teleportTarget.position;
// Re-enable Locomotion
MotionSettings.Instance.locomotionEnabledState = MotionSettings.LocomotionState.Enabled;
Make sure to reference both the Rigidbody
and the MotionSettings
on your Chimp GameObject.
Rigidbody chimpRigidBody = GameObject.Find("Chimp").GetComponent<Rigidbody>();
MotionSettings motionSettings = GameObject.Find("Chimp").GetComponent<MotionSettings>();
private void OnTriggerExit(Collider other)
{
chimpRigidBody.useGravity = false;
motionSettings.inWaterOrSpace = true; // disables motion gravity logic
}
private void OnTriggerEnter(Collider other)
{
chimpRigidBody.useGravity = true;
motionSettings.inWaterOrSpace = false;
}
inWaterOrSpace
bypasses ground checks & gravity fall velocity; used in Zero-G, Water, Dreamworlds.
SCL v9.6 introduced modular movement profiles with hot-swappable presets. These can drastically change feel (e.g., swimming, dream float, hard parkour).
// Switch to "ZeroGravity" profile
MotionSettings.Instance.ApplyMotionProfile("ZeroGravity");
// Switch to "Default" grounded profile
MotionSettings.Instance.ApplyMotionProfile("StandardChimp");
⚠️ Profiles are case-sensitive unless you enforce lowercase in your custom loader.
You can find or edit these under:
SoftChimp → Resources → MotionProfiles/
Sometimes you want gravity and physics to stay but stop user input:
MotionSettings.Instance.locomotionEnabledState = MotionSettings.LocomotionState.InputOnlyDisabled;
-
Cache references to
Rigidbody
andMotionSettings
inAwake()
orStart()
. -
Use
OnTriggerEnter/Exit
only for zone-based logic. For timed or UI-driven changes, usecoroutines
orInvoke
. -
Consider using
tags
orlayer masks
to reduce false triggers.