Component:CharacterController: Difference between revisions

From Resonite Wiki
Updated suggestion in this page with a link to the node that can help way better than the previous suggestion.
add info on rootspace
 
(2 intermediate revisions by one other user not shown)
Line 12: Line 12:


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.
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 <code>SimulatingUser</code>. This will activate the character controller on the slot and make it start simulating. Doing this also lets you use some nodes such as [[ProtoFlux:Is Character Controller|Is Character Controller]] and [[ProtoFlux:Is Character On Ground|Is Character On Ground]], and without a simulating user, the values from some nodes would not be updated.


<!--T:2-->
<!--T:2-->
Line 20: 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| {{stub}}
|MassScaling|PhysicsScalingMode|  
|ForceScaling|PhysicsScalingMode| {{stub}}
|ForceScaling|PhysicsScalingMode|  
|SpeedScaling|PhysicsScalingMode| {{stub}}
|SpeedScaling|PhysicsScalingMode|  
|JumpScaling|PhysicsScalingMode| {{stub}}
|JumpScaling|PhysicsScalingMode|  
|GravityScaling|PhysicsScalingMode| {{stub}}
|GravityScaling|PhysicsScalingMode|  
|LinearDamping|Float| {{stub}}
|LinearDamping|Float|  
|AngularDamping|Float|
|AngularDamping|Float|
|Margin|Float| {{stub}}
|Margin|Float|  
|StepUpHeight|Float|
|StepUpHeight|Float|
|StepUpCheckDistance|Float|
|StepUpCheckDistance|Float|
|KillVerticalVelocityAfterStepUp|Bool|
|KillVerticalVelocityAfterStepUp|Bool|
|EdgeDetectionDepth|Float|
|EdgeDetectionDepth|Float|
|Speed|Float| {{stub}}
|Speed|Float|  
|SlidingSpeed|Float| {{stub}}
|SlidingSpeed|Float|  
|AirSpeed|Float| {{stub}}
|AirSpeed|Float|  
|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 friction force is applied while the CharacterController is moving.
|SlidingForce|Float| How much friction force is applied while the CharacterController is moving.
|AirForce|Float| {{stub}}
|AirForce|Float|  
|MaximumGlueForce|Float| {{stub}}
|MaximumGlueForce|Float|  
|MaximumTractionSlope|Float| Maximum Traction value before user slides down a slope. {{Stub}}
|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 value before user slides down a slope. {{Stub}}
|MaximumSupportSlope|Float| Maximum Support angle (degrees) before user slides down a slope, when not working against the slope.
|JumpSpeed|Float| {{stub}}
|JumpSpeed|Float|  
|SlidingJumpSpeed|Float| {{stub}}
|SlidingJumpSpeed|Float|  
|Gravity|Float3| Force of Gravity for this character controller
|Gravity|Float3| Force of Gravity for this character controller
|GravitySpace|{{RootFieldType|RootSpace}}|TypeAdv28=true|
|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.
|DebugVisualDuration|'''[[Type:Nullable`1|Nullable`1]]&lt;[[Type:Float|Float]]&gt;'''|TypeAdv29=true| Allows for the component to visualize the force vectors acting on the character simulator if set above 0.  
|DebugVisualDuration|'''[[Type:Nullable`1|Nullable`1]]&lt;[[Type:Float|Float]]&gt;'''|TypeAdv29=true| 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.
|__height|Float| Height of the driven [[CapsuleCollider (Component)]] Currently does nothing.
Line 58: Line 60:
This component is usually used internally by Resonite to simulate user movement physics like walking and climbing.  
This component is usually used internally by Resonite to simulate user movement physics like walking and climbing.  


But the node 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 [[ProtoFlux:Trajectory Position| Trajectory Position]] ProtoFlux node is vastly superior.
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 [[ProtoFlux:Trajectory Position| 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.
{{stub}}
{{stub}}



Latest revision as of 17:27, 23 October 2024


This article or section is a Stub. You can help the Resonite Wiki by expanding it.


Component image 
Character Controller component as seen in the Scene Inspector


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.

When getting the character controller of a user, avoid using the character controller under the user root slot. Instead use the node Find Character Controller From User.

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

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
ForceScaling PhysicsScalingMode
SpeedScaling PhysicsScalingMode
JumpScaling PhysicsScalingMode
GravityScaling PhysicsScalingMode
LinearDamping Float
AngularDamping Float
Margin Float
StepUpHeight Float
StepUpCheckDistance Float
KillVerticalVelocityAfterStepUp Bool
EdgeDetectionDepth Float
Speed Float
SlidingSpeed Float
AirSpeed Float
TractionForce Float How much force is needed to overcome standing friction.
SlidingForce Float How much friction force is applied while the CharacterController is moving.
AirForce Float
MaximumGlueForce Float
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
SlidingJumpSpeed Float
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 article or section is a Stub. You can help the Resonite Wiki by expanding it.


Examples

A Shrike NPC running around the cloud home:

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.

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.