public Enemy3AttackState(Enemy3Controller enemy) : base(enemy) { animatorBoolParameterName = "IsAttacking"; _transform = enemy.transform; _parameters = enemy.Parameters; _staffController = enemy.StaffController; _spriteRenderer = enemy.SpriteRenderer; _canAlreadyStopAttackingDelayer = new MethodDelayer(enemy, CanAlreadyStopAttacking); }
protected override void OnAwake() { base.OnAwake(); Rigidbody = GetComponent <Rigidbody2D>(); SpriteRenderer = spriteAnim.gameObject.GetComponent <SpriteRenderer>(); StaffController = GetComponentInChildren <Enemy3StaffController>(); SurroundingsDetector = GetComponentInChildren <SurroundingsDetector>(); AddState(IdleState, new Enemy3WalkingState(this)); AddState(AttackingState, new Enemy3AttackState(this)); }
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); }