fix |
add remaining fields |
||
Line 22: | Line 22: | ||
|HeadReference|Slot| What the Simulation uses for the capsule height | |HeadReference|Slot| What the Simulation uses for the capsule height | ||
|SimulateRotation|Bool| Allow the object simulated by this object to rotate, essentially making it a rigid body. See warning. | |SimulateRotation|Bool| Allow the object simulated by this object to rotate, essentially making it a rigid body. See warning. | ||
|MassScaling|PhysicsScalingMode| | |MassScaling|PhysicsScalingMode| How to scale the mass based on this component's slot scale. | ||
|ForceScaling|PhysicsScalingMode| | |ForceScaling|PhysicsScalingMode| How to scale the force based on this component's slot scale. | ||
|SpeedScaling|PhysicsScalingMode| | |SpeedScaling|PhysicsScalingMode| How to scale the speed based on this component's slot scale. | ||
|JumpScaling|PhysicsScalingMode| | |JumpScaling|PhysicsScalingMode| How to scale the jump force based on this component's slot scale. | ||
|GravityScaling|PhysicsScalingMode| | |GravityScaling|PhysicsScalingMode| How to scale the gravity effect based on this component's slot scale. | ||
|LinearDamping|Float| | |LinearDamping|Float| how fast the character controller slows down when no other forces are being applied to it | ||
|AngularDamping|Float| | |AngularDamping|Float| how fast thus character slows down its rotation when no other forces are being applied to it. | ||
|Margin|Float| | |Margin|Float| Unused. | ||
|StepUpHeight|Float| | |StepUpHeight|Float| How big of a ledge the character controller can step up | ||
|StepUpCheckDistance|Float| | |StepUpCheckDistance|Float| determines the distance the shape is swept in the movement direction to determine if it's free of other obstacles | ||
|KillVerticalVelocityAfterStepUp|Bool| | |KillVerticalVelocityAfterStepUp|Bool| will convert any vertical velocity into directional one in the current planar direction of the movement and push the player back down, preventing the player from getting too much air when running off a ramp or stairs. | ||
|EdgeDetectionDepth|Float| | |EdgeDetectionDepth|Float| the smallest size an edge can be that the character can stand on while against a wall | ||
|Speed|Float| | |Speed|Float| How fast this character controller can move. | ||
|SlidingSpeed|Float| | |SlidingSpeed|Float| how fast the character controller moves when sliding down a slope | ||
|AirSpeed|Float| | |AirSpeed|Float| how fast the character moves in the air | ||
|TractionForce|Float| How much force is needed to overcome standing friction. | |TractionForce|Float| How much force is needed to overcome standing friction. | ||
|SlidingForce|Float| How much | |SlidingForce|Float| How much force is needed to stay moving | ||
|AirForce|Float| | |AirForce|Float| the force needed to move in the air | ||
|MaximumGlueForce|Float| | |MaximumGlueForce|Float| Reduces the velocity of breaking contact from a surface vertically be under this speed. This is useful for simulating sticky surfaces, where the user cannot jump as high. | ||
|MaximumTractionSlope|Float| Maximum Traction angle (degrees) before user slides down a slope, even if they are actively trying to walk up it. | |MaximumTractionSlope|Float| Maximum Traction angle (degrees) before user slides down a slope, even if they are actively trying to walk up it. | ||
|MaximumSupportSlope|Float| Maximum Support angle (degrees) before user slides down a slope, when not working against the slope. | |MaximumSupportSlope|Float| Maximum Support angle (degrees) before user slides down a slope, when not working against the slope. | ||
|JumpSpeed|Float| | |JumpSpeed|Float| The speed of the velocity applied when jumping on a slope with an angle less than or equal to <code>MaximumTractionSlope</code>. | ||
|SlidingJumpSpeed|Float| | |SlidingJumpSpeed|Float| The speed of the velocity applied when jumping on a slope with an angle greater than <code>MaximuSupportSlope</code>. | ||
|Gravity|Float3| Force of Gravity for this character controller | |Gravity|Float3| Force of Gravity for this character controller | ||
|GravitySpace|{{RootFieldType|RootSpace}}|TypeAdv28=true| The coordinate space in which <code>Gravity</code> is applied in. applying gravity to world space using this field, can allow a user to stay upright despite a floor they're parented under is being rotated. which generates interesting effects. | |GravitySpace|{{RootFieldType|RootSpace}}|TypeAdv28=true| The coordinate space in which <code>Gravity</code> is applied in. applying gravity to world space using this field, can allow a user to stay upright despite a floor they're parented under is being rotated. which generates interesting effects. | ||
Line 63: | Line 63: | ||
This component is also used in certain types of vehicles and making them controllable by the user. This is done by having a vehicle you want to make controllable, then making an anchor for the user to sit in, then setting up this component to make that user become the simulating user, thus making their controls change in such a way where they are controlling a vehicle they are sitting on. | This component is also used in certain types of vehicles and making them controllable by the user. This is done by having a vehicle you want to make controllable, then making an anchor for the user to sit in, then setting up this component to make that user become the simulating user, thus making their controls change in such a way where they are controlling a vehicle they are sitting on. | ||
This component can use mesh, Convex mesh, and other colliders in addition to the capsule collider. | |||
<!--T:4--> | <!--T:4--> | ||
Line 72: | Line 73: | ||
[[File:Example_Of_A_CharacterController_NPC.webp|200px|A 4 foot tall Avali NPC with the likeness of a user named Shrike, running in the Resonite Default Cloud Home. It is set to Nighttime and the NPC is near the Reading Nook running towards it.]] | [[File:Example_Of_A_CharacterController_NPC.webp|200px|A 4 foot tall Avali NPC with the likeness of a user named Shrike, running in the Resonite Default Cloud Home. It is set to Nighttime and the NPC is near the Reading Nook running towards it.]] | ||
<br> | <br> | ||
== Protoflux Notes == | == Protoflux Notes == | ||
Line 84: | Line 81: | ||
Using [[ProtoFlux:Allocating User|Allocating User]] will give you the User that spawned out a slot that has this Character Controller Component. | Using [[ProtoFlux:Allocating User|Allocating User]] will give you the User that spawned out a slot that has this Character Controller Component. | ||
[[Category:Components:Physics{{#translation:}}|Character Controller]] | |||
[[Category:Components{{#translation:}}|Character Controller]] |
Latest revision as of 22:51, 1 January 2025
This article or section is a Stub. You can help the Resonite Wiki by expanding it.
Description
The Character Controller component is used for user movement and simulating physics, and has many settings and values that can alter the way on how a user can control either their self or another slot (For example: Vehicles). These Settings allow you to control the mass, speed, force, etc.
Keep in mind that the character controller under the user root slot is currently useless (as in, not used besides it needing to be there) at this time. And removing it just recreates it back on the user root slot.
For this component, when using some features, you may need to either write/drive the field SimulatingUser
. This will activate the character controller on the slot and make it start simulating. Doing this also lets you use some nodes such as Is Character Controller and Is Character On Ground, and without a simulating user, the values from some nodes would not be updated.
Fields
Name | Type | Description |
---|---|---|
persistent
|
Bool | Determines whether or not this item will be saved to the server. |
UpdateOrder
|
Int | Controls the order in which this component is updated. |
Enabled
|
Bool | Controls whether or not this component is enabled. |
SimulatingUser
|
User | The user who is currently simulating and networking this Character Controller. |
CharacterRoot
|
Slot | The slot to simulate |
HeadReference
|
Slot | What the Simulation uses for the capsule height |
SimulateRotation
|
Bool | Allow the object simulated by this object to rotate, essentially making it a rigid body. See warning. |
MassScaling
|
PhysicsScalingMode | How to scale the mass based on this component's slot scale. |
ForceScaling
|
PhysicsScalingMode | How to scale the force based on this component's slot scale. |
SpeedScaling
|
PhysicsScalingMode | How to scale the speed based on this component's slot scale. |
JumpScaling
|
PhysicsScalingMode | How to scale the jump force based on this component's slot scale. |
GravityScaling
|
PhysicsScalingMode | How to scale the gravity effect based on this component's slot scale. |
LinearDamping
|
Float | how fast the character controller slows down when no other forces are being applied to it |
AngularDamping
|
Float | how fast thus character slows down its rotation when no other forces are being applied to it. |
Margin
|
Float | Unused. |
StepUpHeight
|
Float | How big of a ledge the character controller can step up |
StepUpCheckDistance
|
Float | determines the distance the shape is swept in the movement direction to determine if it's free of other obstacles |
KillVerticalVelocityAfterStepUp
|
Bool | will convert any vertical velocity into directional one in the current planar direction of the movement and push the player back down, preventing the player from getting too much air when running off a ramp or stairs. |
EdgeDetectionDepth
|
Float | the smallest size an edge can be that the character can stand on while against a wall |
Speed
|
Float | How fast this character controller can move. |
SlidingSpeed
|
Float | how fast the character controller moves when sliding down a slope |
AirSpeed
|
Float | how fast the character moves in the air |
TractionForce
|
Float | How much force is needed to overcome standing friction. |
SlidingForce
|
Float | How much force is needed to stay moving |
AirForce
|
Float | the force needed to move in the air |
MaximumGlueForce
|
Float | Reduces the velocity of breaking contact from a surface vertically be under this speed. This is useful for simulating sticky surfaces, where the user cannot jump as high. |
MaximumTractionSlope
|
Float | Maximum Traction angle (degrees) before user slides down a slope, even if they are actively trying to walk up it. |
MaximumSupportSlope
|
Float | Maximum Support angle (degrees) before user slides down a slope, when not working against the slope. |
JumpSpeed
|
Float | The speed of the velocity applied when jumping on a slope with an angle less than or equal to MaximumTractionSlope .
|
SlidingJumpSpeed
|
Float | The speed of the velocity applied when jumping on a slope with an angle greater than MaximuSupportSlope .
|
Gravity
|
Float3 | Force of Gravity for this character controller |
GravitySpace
|
direct RootSpace | The coordinate space in which Gravity is applied in. applying gravity to world space using this field, can allow a user to stay upright despite a floor they're parented under is being rotated. which generates interesting effects.
|
DebugVisualDuration
|
Nullable`1<Float> | Allows for the component to visualize the force vectors acting on the character simulator if set above 0. |
__height
|
Float | Height of the driven CapsuleCollider (Component) Currently does nothing. |
__radius
|
Float | Radius of the driven CapsuleCollider (Component) Currently does nothing. |
__mass
|
Float | Mass of the of the driven CapsuleCollider (Component) Currently does nothing. |
__collideWithOtherCharacters
|
Bool | Currently does nothing. |
__ignoreRaycasts
|
Bool | Currently does nothing. |
__rootAtBottom
|
Bool | Currently does nothing. |
Usage
This component is usually used internally by Resonite to simulate user movement physics like walking and climbing.
But the component can also be manipulated to create "Fake Players" commonly known by Resonite users as "NPC's". Before doing this, know that the physics simulation is always inconsistent when viewed by different players in the same session. It also causes high amounts of networking and FPS lag. Use too many and you may start rising in Queued Packets. The character controller can also be used as a ball, but for things that fly or bounce, using a Trajectory Position ProtoFlux node is vastly superior.
This component is also used in certain types of vehicles and making them controllable by the user. This is done by having a vehicle you want to make controllable, then making an anchor for the user to sit in, then setting up this component to make that user become the simulating user, thus making their controls change in such a way where they are controlling a vehicle they are sitting on.
This component can use mesh, Convex mesh, and other colliders in addition to the capsule collider.
Examples
A Shrike NPC running around the cloud home:
Protoflux Notes
Using Character Controller User will give you the Simulating User of this Character Controller Component.
Using Get User From Component will give you the Owner User of this Character Controller Component.
Using Allocating User will give you the User that spawned out a slot that has this Character Controller Component.