platformer
Public Member Functions | Public Attributes | List of all members
UnityPlatformer.AIPatrol Class Reference

Patrol Artificial inteligence. More...

Inheritance diagram for UnityPlatformer.AIPatrol:
UnityPlatformer.Enemy UnityPlatformer.Character UnityPlatformer.PlatformerCollider2D UnityPlatformer.IUpdateEntity UnityPlatformer.RaycastController UnityPlatformer.AIJumper

Public Member Functions

override void Start ()
 Listen onLeftWall, onRightWall and start moving in #facing direction More...
 
virtual void OnLeftWall ()
 Move right More...
 
virtual void OnRightWall ()
 Move left More...
 
virtual void Toogle ()
 Move in the other direction More...
 
virtual void Stop ()
 Move in the other direction More...
 
virtual void Resume ()
 Move in the other direction More...
 
override void LatePlatformerUpdate (float delta)
 Check that the Character do not fall More...
 
- Public Member Functions inherited from UnityPlatformer.Enemy
override void Start ()
 check missconfiguration More...
 
override void OnEnable ()
 sync UpdateManager More...
 
override void OnDisable ()
 sync UpdateManager More...
 
- Public Member Functions inherited from UnityPlatformer.Character
delegate void AreaChange (Areas before, Areas after)
 Area change callback type More...
 
delegate void InjuredCharacter (Damage dt, CharacterHealth to, Character character)
 Character is Injured callback type More...
 
delegate void StateChange (States before, States after)
 State change event callback type More...
 
delegate void CharacterMove (Character character, float delta)
 Character move callback type More...
 
virtual void Awake ()
 This method precalculate some vars, but those value could change. This need to be refactored. Maybe setters are the appropiate method to refactor this. More...
 
GetAction< T > ()
 Get CharacterAction by type More...
 
virtual void PlatformerUpdate (float delta)
 Managed update called by UpdateManager More...
 
bool IsOnState (States _state)
 Return if the Character is on given state More...
 
bool IsOnAnyState (States _state)
 Return if the Character is on any of the given states More...
 
bool IsOnArea (Areas _area)
 Return if the Character is on given area More...
 
void EnterStateGraceful (States a)
 EnterState if it's not already in it It a safe mechanism to not trigger the change More...
 
void ExitStateGraceful (States a)
 EnterState if it's not already in it It a safe mechanism to not trigger the change More...
 
void EnterState (States a, bool privcall=false)
 Notify that Character enter a new state. There are incompatible states, like jumping and falling, You don't need to handle those manually, we will exit any state needed here. More...
 
void ExitState (States a, bool privcall=false)
 Notify that Character enter a new state. There are incompatible states, like jumping and falling, You don't need to handle those manually, we will exit any state needed here. More...
 
void EnterArea (Areas a)
 Character enter given area More...
 
void ExitArea (Areas a)
 Character exit given area More...
 
virtual void OnDeath ()
 Event when player is dead More...
 
void SetOverrideAnimation (string animation, bool freeze)
 Override current animation with the one given. The animation will be entirely played, then it will ClearOverrideAnimation More...
 
void ClearOverrideAnimation ()
 nullify forceAnimation. to be used with UpdateManager.SetTimeout More...
 
bool IsGroundOnLeft (float rayLengthFactor, float delta, Vector3? vel=null)
 Tell you if there is something on the left side NOTE ray origin is raycastOrigins.bottomLeft More...
 
bool IsGroundOnRight (float rayLengthFactor, float delta, Vector3? vel=null)
 Tell you if there is something on the right side NOTE ray origin is raycastOrigins.bottomRight More...
 
void SetFacing (Facing f)
 Set faceDir manualy More...
 
void SetFacing (float x)
 Based on 'horizontal movement' More...
 
bool IsBox (Directions dir)
 Is there a box on given direction? More...
 
Box GetLowestBox (Directions dir)
 Get the lowest box (the one Character Pull/Push) More...
 
- Public Member Functions inherited from UnityPlatformer.PlatformerCollider2D
override void Start ()
 Initialization More...
 
override void OnEnable ()
 More Initialization More...
 
bool IsMovingAgainstGravity (ref Vector3 velocity)
 Is character move against gravity More...
 
bool IsDirectionBelow (int dir)
 Returns if gravity has the same direction as dir More...
 
bool IsDirectionAbove (int dir)
 Returns if gravity has the opposite direction as dir More...
 
Vector3 Move (Vector3 velocity, float delta)
 Attempt to move the character to current position + velocity. More...
 
void DisableSlopes (float resetDelay=0.5f)
 Disable slopes, so no more ClimbSlope/DescendSlope More...
 
void EnableSlopes ()
 same as: 'enableSlopes=true' to be used with: UpdateManager.SetTimeout More...
 
void FallThroughPlatform (float resetDelay=0.5f)
 fallingThroughPlatform = true during resetDelay time More...
 
void ResetFallingThroughPlatform ()
 same as: 'fallingThroughPlatform=false' to be used with: UpdateManager.SetTimeout More...
 
void EnableLeaveGround (float resetDelay=0.5f)
 leavingGround = true during resetDelay time More...
 
void DisableLeaveGround ()
 same as: 'leavingGround=false' to be used with: UpdateManager.SetTimeout More...
 
bool IsOnGround (int graceFrames=0)
 Collider is/was on ground. More...
 
Vector3 GetDownSlopeDir ()
 Vector pointing were to descend / slip More...
 
void ConsolidateCollisions ()
 After all work, notify changes More...
 
- Public Member Functions inherited from UnityPlatformer.RaycastController
void UpdateInnerBounds ()
 Recalculate shrinked the bounds More...
 
void UpdateRaycastOrigins ()
 Recalculate raycastOrigins More...
 
void CalculateRaySpacing ()
 Recalculate distance between rays (horizontalRaySpacing & verticalRaySpacing) More...
 
RaycastHit2D Raycast (Vector2 origin, Vector2 direction, float rayLength, int mask, Color? color=null)
 Call Physics2D.Raycast and Draw the ray to debug More...
 
RaycastHit2D VerticalRay (float directionY, int index, float rayLength, ref Vector3 velocity, Color? c=null)
 Return RaycastHit2D of Raycasting at given index More...
 
RaycastHit2D FeetRay (float rayLength, LayerMask mask)
 Return RaycastHit2D of Raycasting at bottom center. More...
 
delegate void RayItr (ref RaycastHit2D hit, ref Vector3 velocity, int dir, int idx)
 Callback for iterate rays More...
 
void ForeachRightRay (float rayLength, ref Vector3 velocity, RayItr itr)
 Iterate over all right/horizontal rays More...
 
void ForeachLeftRay (float rayLength, ref Vector3 velocity, RayItr itr)
 Iterate over all left/horizontal rays More...
 
void ForeachHeadRay (float rayLength, ref Vector3 velocity, RayItr itr, bool checkGravitySwap=true)
 Iterate over all head/vertical rays More...
 
void ForeachFeetRay (float rayLength, ref Vector3 velocity, RayItr itr, bool checkGravitySwap=true)
 Iterate over all feet/vertical rays More...
 
Vector2 GetDownVector ()
 Return gravity aware down Vector2 More...
 
Vector3 GetBottomLeft ()
 Return gravity aware bottom left More...
 
Vector3 GetBottomRight ()
 Return gravity aware bottom right More...
 
RaycastHit2D LeftFeetRay (float rayLength, Vector3 velocity)
 Return RaycastHit2D of Raycasting at bottom left. More...
 
RaycastHit2D RightFeetRay (float rayLength, Vector3 velocity)
 Return RaycastHit2D of Raycasting at bottom right. More...
 

Public Attributes

Facing initialFacing = Facing.Left
 Initial Facing More...
 
float rayLengthFactor = 1.0f
 Distance to test if ground is on left/right side. Helps when Enemy standing on platform moving down. More...
 
bool doNotFall = true
 true: when reach an edge, change direction
false: when reach an edge, just fall More...
 
bool resetVelocityOnTurn = false
 true: when turn set velocity to zero so next frame will start moving the other direction
false: when turn, do not touch velocity, will decelerate before change direction More...
 
- Public Attributes inherited from UnityPlatformer.Enemy
AIInput input
 Input More...
 
- Public Attributes inherited from UnityPlatformer.Character
float fallingTime = 0.1f
 Delay before enter States.Falling. More...
 
float groundGraceTime = 0.05f
 Delay before exit States.OnGround. More...
 
float minVelocity = 0.05f
 Minimum velocity. This is not a magnitude. More...
 
AreaChange onAreaChange
 Area change event (enter or leave) More...
 
InjuredCharacter onInjuredCharacter
 Character is Injured More...
 
StateChange onStateChange
 State change event (enter or leave) More...
 
CharacterMove onBeforeMove
 Before character move event More...
 
CharacterMove onAfterMove
 After character move event More...
 
List< CharacterActionactions = new List<CharacterAction>()
 List of enabled actions More...
 
Facing faceDir
 Where is facing More...
 
bool turnAllowed = true
 faceDir change is allowed?
This is used at melee attack so when you start an attack character don't turn and attack both sides at the same time. More...
 
States state = States.None
 Current states More...
 
Areas area = Areas.None
 Current areas More...
 
Fence fence
 Current fence More...
 
Ladder ladder
 Current ladder More...
 
Ladder ladderBottom
 Ladder at Character feet More...
 
Liquid liquid
 Current liquid More...
 
Item item
 Current reachable item More...
 
Grab grab
 Current Grab area More...
 
Rope rope
 Current Rope More...
 
int ropeIndex = -1
 Current RopeSection index More...
 
TrackData track
 Current Track More...
 
MovingPlatform platform
 Current MovingPlatform More...
 
Vector3 velocity = Vector3.zero
 character velocity More...
 
Vector3 worldVelocity = Vector3.zero
 World velocity: wind, Track... More...
 
Vector3 movedLastFrame = Vector3.zero
 Amount moved in the last PlatformerUpdate More...
 
CharacterHealth health
 Cache CharacterHealth More...
 
HitBox enterAreas
 Cache HitBox More...
 
CharacterAnimator animator
 Cache CharacterAnimator More...
 
string forceAnimation
 Force to play this animation More...
 
float frozen = -1f
 Do not execute any Action, Character still moves, so set velocity to Vector3.zero if necesarry More...
 
Bounds colBounds
 Collision bound More...
 
CharacterAction lastAction
 last active action More...
 
CharacterAction meleeInProgress
 Melee attack in progress More...
 
- Public Attributes inherited from UnityPlatformer.PlatformerCollider2D
Vector2 gravityOverride = Vector2.zero
 Override Configuration.gravity More...
 
Vector2 terminalVelocity = new Vector2(50, 25)
 Terminal velocity: maximum velocity that the PlatformerCollider2D could have. More...
 
float maxClimbAngle = 45.0f
 Maximum angle the collider can walk-up More...
 
float maxDescendAngle = 45.0f
 Maximum angle the collider can walk-down More...
 
float wallAngle = 89.9f
 Greater than wallAngle will be considered a Wall, not a slope More...
 
bool enableSlopes = true
 Enable slopes More...
 
float minTranslation = 0.01f
 Prevent unwanted micro changes in orientation/falling. More...
 
bool useRigidbody2D = false
 This is experimental staff, If we use RigidBody2D we are sure to never enter another object by accident and we handle less collisions but has many drawbacks, that can't be solved atm, like OneWayPlatforms More...
 
Action onRightWall
 Collider hit a wall on right side More...
 
Action onLeftWall
 Collider hit a wall on left side More...
 
Action onLanding
 Collider hit the ground More...
 
Action onLeaveGround
 Collider leave ground More...
 
Action onTop
 Collider hit something with the 'Head' More...
 
- Public Attributes inherited from UnityPlatformer.RaycastController
bool debug = false
 Enable drawing debug information, this has performance impact More...
 
LayerMask collisionMask
 Static geometry mask More...
 
float minDistanceToEnv = 0.1f
 How far from then env the Character must be. More...
 
float skinWidth = 0.2f
 Defines how far in from the edges of the collider rays are we going to cast from. More...
 
int horizontalRayCount = 4
 How many rays to check horizontal collisions More...
 
int verticalRayCount = 4
 How many rays to check vertical collisions More...
 
float height
 Collider real height More...
 
Vector3 localCenter
 Collider center in local space More...
 

Additional Inherited Members

- Static Public Member Functions inherited from UnityPlatformer.Character
static bool BitOn (int a, int b)
 shortcut: Is a bit on More...
 
- Properties inherited from UnityPlatformer.Character
Vector2 lastJumpDistance [get]
 Last jump distance More...
 
Vector2 lastFallDistance [get]
 Last fall distance More...
 
Vector2 head [get]
 Character head position More...
 
Vector2 feet [get]
 Character feet position More...
 
- Properties inherited from UnityPlatformer.PlatformerCollider2D
Vector2 gravity [get]
 Retrievethe real gravity for this Collider More...
 
- Properties inherited from UnityPlatformer.RaycastController
Vector3 center [get]
 Collider center in world space More...
 

Detailed Description

Patrol Artificial inteligence.

Does not require Actions but it's recommended because:
If no CharacterActionAirMovement it will froze while on air
If no CharacterActionGroundMovement it will froze while on ground

Member Function Documentation

◆ LatePlatformerUpdate()

override void UnityPlatformer.AIPatrol.LatePlatformerUpdate ( float  delta)
inlinevirtual

Check that the Character do not fall

Reimplemented from UnityPlatformer.Character.

◆ OnLeftWall()

virtual void UnityPlatformer.AIPatrol.OnLeftWall ( )
inlinevirtual

Move right

◆ OnRightWall()

virtual void UnityPlatformer.AIPatrol.OnRightWall ( )
inlinevirtual

Move left

◆ Resume()

virtual void UnityPlatformer.AIPatrol.Resume ( )
inlinevirtual

Move in the other direction

◆ Start()

override void UnityPlatformer.AIPatrol.Start ( )
inlinevirtual

Listen onLeftWall, onRightWall and start moving in #facing direction

Reimplemented from UnityPlatformer.RaycastController.

◆ Stop()

virtual void UnityPlatformer.AIPatrol.Stop ( )
inlinevirtual

Move in the other direction

◆ Toogle()

virtual void UnityPlatformer.AIPatrol.Toogle ( )
inlinevirtual

Move in the other direction

Member Data Documentation

◆ doNotFall

bool UnityPlatformer.AIPatrol.doNotFall = true

true: when reach an edge, change direction
false: when reach an edge, just fall

◆ initialFacing

Facing UnityPlatformer.AIPatrol.initialFacing = Facing.Left

Initial Facing

◆ rayLengthFactor

float UnityPlatformer.AIPatrol.rayLengthFactor = 1.0f

Distance to test if ground is on left/right side. Helps when Enemy standing on platform moving down.

◆ resetVelocityOnTurn

bool UnityPlatformer.AIPatrol.resetVelocityOnTurn = false

true: when turn set velocity to zero so next frame will start moving the other direction
false: when turn, do not touch velocity, will decelerate before change direction


The documentation for this class was generated from the following file: