VaelisDocs
v1.0.0
Components · v1.0.0

CharacterController

Vaelis 1.0.0 CharacterController component reference: fields, script API, behavior and examples.

View as Markdownllms.txt
ScopeThis page documents the CharacterController component in Vaelis 1.0.0. Runtime fields are serialized scene data; the Script API section lists only members intentionally exposed to game scripts.
Where to find it in the editorInspector → Add Component → Movement Type. Pick Character Controller, Platformer, Top-Down, Car, Follow or Patrol; fields in the Inspector change with the selected mode.

#What it does

High-level movement modes: Character Controller, Platformer, Top-Down, Car, Follow, Patrol and Free.

Component setup & editor toolsCharacterController provides the higher-level movement behaviors such as Platformer, Car, Follow, or Patrol when configured with the required physics components.

#How to add and use CharacterController

Editor path: Select the target entity in the Hierarchy (left side) → look at the Inspector (right side) → click Add Component at the bottom of the Inspector → search for CharacterController → click the component row. The Add Component picker is a centered modal with a search box; it only lists components not already attached.

For components with a dedicated editor tool, the tool is opened or activated from the location described below. Do not assume that adding the component alone activates its editor; some systems require a separate window, panel, or viewport tool.

#Component setup & editor tools

  • Select entity → Inspector → Add Component → Movement Type (CharacterController). Choose the controller type first; the Inspector then exposes the relevant movement fields. Platformer/Car/Follow/Patrol fields are not interchangeable—configure only the group belonging to the selected controller type.

#What you should see after adding it

The component appears as its own section in the Inspector. Its serialized settings are listed in the Component data table below. If a field is conditional, it appears only when the relevant mode/type is selected. If a field is a runtime state field (for example grounded or resolved velocity), treat it as read-only diagnostic state unless the API reference explicitly documents it as writable.

#How to read the settings

For every setting below, the documentation distinguishes type, default, meaning, and tuning direction where behavior is known. When a value represents a direction, use the engine's coordinate convention documented in Coordinate system; do not substitute Unity/Godot conventions.

#Component data

FieldTypePurposeDefault
controllerTypeenumCharacter Controller | Platformer | Top-Down | Car | Follow | Patrol | Free.Character Controller
moveSpeednumberGeneral movement speed.200
accelerationnumberAcceleration.20
airControlnumberAir control multiplier.0.5
canJumpbooleanJump enabled.true
jumpForcenumberJump impulse/velocity.420
maxJumpsintegerMaximum sequential jumps.1
useGravitybooleanUse gravity where supported.true
gravityScalenumberGravity multiplier.1
useDefaultInputbooleanUse built-in input mapping.true
maxSpeednumberCar maximum speed.350
carAccelerationnumberCar acceleration.200
brakeForcenumberCar braking force.400
turnSpeednumberCar turning speed.150
driftFactornumberCar drift behavior.0.92
driveTowardArriveDistancenumberCar drive-toward arrival distance.12
targetNamestringFollow target entity name.
followSpeednumberFollow speed.150
followDistancenumberFollow spacing.5
patrolDistancenumberPatrol distance.150
patrolModeenumPlatformer | Top-Down.Platformer
patrolAxisenumHorizontal | Vertical.Horizontal
requestJumpbooleanSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)false
requestMoveXvalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestMoveYvalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestThrottlevalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestSteervalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestJoystickXvalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestJoystickYvalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestDriveTowardXvalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestDriveTowardYvalue | nullSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)null
requestFlipbooleanSet transiently by the engine (controller/navigation input); not an authored setting. (engine-managed runtime state)false

#Tuning behavior

These are the practical direction-of-change rules for the most important controls on this component.

SettingWhat changing it does
moveSpeedHigher = faster target movement.
accelerationHigher = reaches the requested speed faster; lower = softer/slower ramp.
airControlFor Platformer, 0 removes horizontal air steering; 1 gives full ground-like acceleration in air.
jumpForceHigher = stronger/faster upward launch; lower = shorter jump.
gravityScale1 = normal controller gravity, 0 = no controller gravity; higher magnifies the pull.

#Script API

MemberKindDescription
controllerTypePropertyRead-only movement type.
moveSpeedPropertyMovement speed.
accelerationPropertyAcceleration.
airControlPropertyAir-control factor.
useGravityPropertyGravity toggle.
gravityScalePropertyGravity scale.
useDefaultInputPropertyBuilt-in input mapping.
simulateMove(x,y)MethodDrive movement by script.
isGroundedPropertyGround state.
isOnCeilingPropertyCeiling contact.
isOnWallPropertyWall contact.
isOnSlopePropertySlope contact.
groundAnglePropertyGround angle.
canJumpPropertyWhether jumping is available.
jumpForcePropertyJump force.
maxJumpsPropertyMaximum jumps.
simulateJump()MethodRequest a jump.
maxSpeedPropertyCar maximum speed.
brakeForcePropertyCar brake force.
turnSpeedPropertyCar turn speed.
driftFactorPropertyCar drift factor.
simulateDrive(throttle, steer)MethodDrive a Car controller by script.
simulateDriveJoystick(x,y)MethodDrive using joystick-style vector input.
simulateDriveToward(x,y)MethodDrive toward a world point.
targetNamePropertyFollow target name.
followSpeedPropertyFollow speed.
followDistancePropertyFollow distance.
patrolModePropertyPlatformer | Top-Down.
patrolAxisPropertyHorizontal | Vertical.
patrolDistancePropertyPatrol distance.
flipDirection()MethodReverse Patrol direction.
facingDirectionPropertyCurrent patrol facing direction.
driveTowardArriveDistancePropertyAvailable on this module.

#Notes & behavior

  • Car-only fields/actions are meaningful for the Car controller. Patrol has its own patrolMode and patrolAxis. Free is script-driven with no built-in input mapping.

#Examples

js
this.controller.simulateMove(input.keyDown("ArrowRight") ? 1 : 0, 0);
js
this.controller.simulateJump();
Need the full workflow?Components: complete workflow covers adding, configuring, testing, combining, and removing components.