C# Класс CharacterController2D, WorldsofREM

Наследование: MonoBehaviour
Показать файл Открыть проект Примеры использования класса

Открытые свойства

Свойство Тип Описание
jumpingThreshold float
platformMask LayerMask
slopeSpeedMultiplier AnimationCurve
triggerMask LayerMask
usePhysicsForMovement bool

Открытые методы

Метод Описание
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

Приватные методы

Метод Описание
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 ( Vector3 futurePosition, Vector3 deltaMovement ) : 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.

Описание методов

OnTriggerEnter2D() публичный Метод

public OnTriggerEnter2D ( Collider2D col ) : void
col UnityEngine.Collider2D
Результат void

OnTriggerExit2D() публичный Метод

public OnTriggerExit2D ( Collider2D col ) : void
col UnityEngine.Collider2D
Результат void

OnTriggerStay2D() публичный Метод

public OnTriggerStay2D ( Collider2D col ) : void
col UnityEngine.Collider2D
Результат void

move() публичный Метод

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.
Результат void

recalculateDistanceBetweenRays() публичный Метод

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
Результат void

warpToGrounded() публичный Метод

moves directly down until grounded
public warpToGrounded ( ) : void
Результат void

Описание свойств

jumpingThreshold публичное свойство

the threshold in the change in vertical movement between frames that constitutes jumping
public float jumpingThreshold
Результат float

platformMask публичное свойство

mask with all layers that the player should interact with
public LayerMask platformMask
Результат LayerMask

slopeSpeedMultiplier публичное свойство

curve for multiplying speed based on slope (negative = down slope and positive = up slope)
public AnimationCurve slopeSpeedMultiplier
Результат AnimationCurve

triggerMask публичное свойство

mask with all layers that trigger events should fire when intersected
public LayerMask triggerMask
Результат LayerMask

usePhysicsForMovement публичное свойство

toggles if the RigidBody2D methods should be used for movement or if Transform.Translate will be used. All the usual Unity rules for physics based movement apply when true such as getting your input in Update and only calling move in FixedUpdate amonst others.
public bool usePhysicsForMovement
Результат bool