protected override void OnAwake() { base.OnAwake(); Rigidbody = GetComponent <Rigidbody2D>(); SurroundingsDetector = GetComponentInChildren <SurroundingsDetector>(); AddState(WalkingState, new WalkingState(this)); }
public WalkingState(Enemy1Controller enemy) : base(enemy) { _rigidbody = enemy.Rigidbody; _surroundings = enemy.SurroundingsDetector; _parameters = enemy.Parameters; _direction = _parameters.hasBeenSpawned ? (_parameters.orientationIsRight ? 1 : -1) : _parameters.initialDirection; // Pequeño delay para evitar que el enemigo cambie de dirección muy rápido mientras el raycast sigue // colisionando con la pared/sigue sin colisionar el suelo por unos pocos frames. _canChangeDirectionAgainDelayer = new MethodDelayer(enemy, CanChangeDirectionAgain); }
public Enemy3WalkingState(Enemy3Controller enemy) : base(enemy) { animatorBoolParameterName = "IsWalking"; _transform = enemy.transform; _spriteRenderer = enemy.SpriteRenderer; _rigidbody = enemy.Rigidbody; _parameters = enemy.Parameters; _surroundings = enemy.SurroundingsDetector; _staffController = enemy.StaffController; _direction = _parameters.initialDirection; // Pequeño delay para evitar que el enemigo cambie de dirección muy rápido mientras el raycast sigue // colisionando con la pared/sigue sin colisionar el suelo por unos pocos frames. _canChangeDirectionAgainDelayer = new MethodDelayer(enemy, CanChangeDirectionAgain); }