C# Class Prime31.CharacterController2D

Inheritance: UnityEngine.MonoBehaviour
显示文件 Open project: prime31/CharacterController2D Class Usage Examples

Public Properties

Property Type Description
ignoreOneWayPlatformsThisFrame bool
jumpingThreshold float
platformMask UnityEngine.LayerMask
slopeSpeedMultiplier UnityEngine.AnimationCurve
triggerMask UnityEngine.LayerMask

Public Methods

Method Description
OnTriggerEnter2D ( Collider2D col ) : void
OnTriggerExit2D ( Collider2D col ) : void
OnTriggerStay2D ( Collider2D col ) : void
move ( Vector3 deltaMovement ) : void

attempts to move the character to position + deltaMovement. Any colliders in the way will cause the movement to stop when run into.

recalculateDistanceBetweenRays ( ) : void

this should be called anytime you have to modify the BoxCollider2D at runtime. It will recalculate the distance between the rays used for collision detection. It is also used in the skinWidth setter in case it is changed at runtime.

warpToGrounded ( ) : void

moves directly down until grounded

Private Methods

Method Description
Awake ( ) : void
DrawRay ( Vector3 start, Vector3 dir, Color color ) : void
handleHorizontalSlope ( Vector3 &deltaMovement, float angle ) : bool

handles adjusting deltaMovement if we are going up a slope.

handleVerticalSlope ( Vector3 &deltaMovement ) : void

checks the center point under the BoxCollider2D for a slope. If it finds one then the deltaMovement is adjusted so that the player stays grounded and the slopeSpeedModifier is taken into account to speed up movement.

moveHorizontally ( Vector3 &deltaMovement ) : void

we have to use a bit of trickery in this one. The rays must be cast from a small distance inside of our collider (skinWidth) to avoid zero distance rays which will get the wrong normal. Because of this small offset we have to increase the ray distance skinWidth then remember to remove skinWidth from deltaMovement before actually moving the player

moveVertically ( Vector3 &deltaMovement ) : void
primeRaycastOrigins ( ) : void

resets the raycastOrigins to the current extents of the box collider inset by the skinWidth. It is inset to avoid casting a ray from a position directly touching another collider which results in wonky normal data.

Method Details

OnTriggerEnter2D() public method

public OnTriggerEnter2D ( Collider2D col ) : void
col UnityEngine.Collider2D
return void

OnTriggerExit2D() public method

public OnTriggerExit2D ( Collider2D col ) : void
col UnityEngine.Collider2D
return void

OnTriggerStay2D() public method

public OnTriggerStay2D ( Collider2D col ) : void
col UnityEngine.Collider2D
return void

move() public method

attempts to move the character to position + deltaMovement. Any colliders in the way will cause the movement to stop when run into.
public move ( Vector3 deltaMovement ) : void
deltaMovement Vector3 Delta movement.
return void

recalculateDistanceBetweenRays() public method

this should be called anytime you have to modify the BoxCollider2D at runtime. It will recalculate the distance between the rays used for collision detection. It is also used in the skinWidth setter in case it is changed at runtime.
public recalculateDistanceBetweenRays ( ) : void
return void

warpToGrounded() public method

moves directly down until grounded
public warpToGrounded ( ) : void
return void

Property Details

ignoreOneWayPlatformsThisFrame public_oe property

when true, one way platforms will be ignored when moving vertically for a single frame
public bool ignoreOneWayPlatformsThisFrame
return bool

jumpingThreshold public_oe property

the threshold in the change in vertical movement between frames that constitutes jumping
public float jumpingThreshold
return float

platformMask public_oe property

mask with all layers that the player should interact with
public LayerMask,UnityEngine platformMask
return UnityEngine.LayerMask

slopeSpeedMultiplier public_oe property

curve for multiplying speed based on slope (negative = down slope and positive = up slope)
public AnimationCurve,UnityEngine slopeSpeedMultiplier
return UnityEngine.AnimationCurve

triggerMask public_oe property

mask with all layers that trigger events should fire when intersected
public LayerMask,UnityEngine triggerMask
return UnityEngine.LayerMask