Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }