void OnTriggerExit2D(Collider2D collider) { _playerColliderState = PlayerColliderState.Outside; var handler = Exited; if (handler != null) { InvokeHandler(handler, collider); } }
void OnTriggerEnter2D(Collider2D collider) { _playerColliderState = PlayerColliderState.Inside; var playerState = GameManager.Instance.Player.PlayerState; if (PlayerStatesNeededToEnter != null && PlayerStatesNeededToEnter.Any(ps => (playerState & ps) == 0)) { _playerColliderState |= PlayerColliderState.WrongStateOnEnter; return; } InvokeEnter(collider); }
void OnTriggerStay2D(Collider2D collider) { if ((_playerColliderState & PlayerColliderState.WrongStateOnEnter) == 0) { return; } var playerState = GameManager.Instance.Player.PlayerState; if (PlayerStatesNeededToEnter.All(ps => (playerState & ps) != 0)) { _playerColliderState &= ~PlayerColliderState.WrongStateOnEnter; InvokeEnter(collider); } }