Пример #1
0
    private void MagicAttack()
    {
        if (_actionTimer > 2)
        {
            _actualAction = MinotaurAction.Idle;
        }

        if (_magicDelayTimer > _magicDelay)
        {
            _magicDelayTimer = 0;
            if (_magicDirecion)
            {
                NewProjectile2(_magicProjectiles[0].gameObject, new Vector2(0, 0.2f), Vector2.up * _bulletVelocityFactor);
                NewProjectile2(_magicProjectiles[1].gameObject, new Vector2(0.2f, 0), Vector2.right * _bulletVelocityFactor);
                NewProjectile2(_magicProjectiles[2].gameObject, new Vector2(-0.2f, 0), Vector2.left * _bulletVelocityFactor);
                NewProjectile2(_magicProjectiles[3].gameObject, new Vector2(0, -0.2f), Vector2.down * _bulletVelocityFactor);
            }
            else
            {
                NewProjectile2(_magicProjectiles[0].gameObject, new Vector2(0, 0.2f), (Vector2.up + Vector2.right) * _bulletVelocityFactor);
                NewProjectile2(_magicProjectiles[1].gameObject, new Vector2(0.2f, 0), (Vector2.down + Vector2.right) * _bulletVelocityFactor);
                NewProjectile2(_magicProjectiles[2].gameObject, new Vector2(-0.2f, 0), (Vector2.up + Vector2.left) * _bulletVelocityFactor);
                NewProjectile2(_magicProjectiles[3].gameObject, new Vector2(0, -0.2f), (Vector2.down + Vector2.left) * _bulletVelocityFactor);
            }

            _magicDirecion = !_magicDirecion;
        }
    }
Пример #2
0
 public override void Attack()
 {
     _Anim.SetBool("Attacking", true);
     if (_meleePerformed)
     {
         _Anim.SetBool("Stunned", true);
         _Anim.SetBool("Walking", false);
         _Anim.SetBool("Attacking", false);
         _readyToAttack = false;
         _status        = Status.Stunned;
         _ccEffectTimer = 1.5f;
         _actualAction  = MinotaurAction.Idle;
     }
 }
Пример #3
0
    private void SpawnMinions()
    {
        if (_actionTimer >= 1.0f)
        {
            _actualAction   = MinotaurAction.Idle;
            _minionsSpawned = false;
            return;
        }

        if (!_minionsSpawned)
        {
            _minionsSpawned = true;
            var m1 = Instantiate(_minion);
            m1.transform.position = new Vector2(this.transform.position.x + 0.5f, this.transform.position.y);

            var m2 = Instantiate(_minion);
            m2.transform.position = new Vector2(this.transform.position.x - 0.5f, this.transform.position.y);
        }
    }
Пример #4
0
    public override void FixedUpdate()
    {
        UpdateTimers();
        CheckPersonalStatus();
        if (_status == Status.Stunned)
        {
            return;
        }
        else
        {
            _Anim.SetBool("Stunned", false);
        }

        if (_actualAction == MinotaurAction.Idle)
        {
            _actualAction = (MinotaurAction)RandomNumber(1, 2);
            _actionTimer  = 0;
        }

        switch (_actualAction)
        {
        case MinotaurAction.Melee:
            Chase();
            break;

        case MinotaurAction.Magic:
            MagicAttack();
            break;

        //case MinotaurAction.Rocks:
        //    break;
        case MinotaurAction.Minions:
            SpawnMinions();
            break;
        }
    }
Пример #5
0
    public override void Chase()
    {
        if (_actionTimer > 7.0f)
        {
            _actualAction = MinotaurAction.Idle;
            _Anim.SetBool("Walking", false);
            _Rig2D.velocity = Vector2.zero;
            return;
        }

        float distanceR;
        float distanceL;
        float distance = float.MaxValue;

        if (_player != null)
        {
            distanceR = WhereIsATarget(_targetToAttack.position + _meleeOffsetR, true);
            distanceL = WhereIsATarget(_targetToAttack.position + _meleeOffsetL, true);
            if (distanceL < distanceR)
            {
                WhereIsATarget2(_targetToAttack.position + _meleeOffsetL);
                distance = distanceL;
            }
            else
            {
                WhereIsATarget2(_targetToAttack.position + _meleeOffsetR);
                distance = distanceR;
            }
        }

        if (_readyToAttack)
        {
            Attack();
            _Rig2D.velocity = Vector2.zero;
        }
        else
        {
            if (_Rig2D.velocity.x > 0 && _axis.x < 0)
            {
                _Rig2D.velocity = Vector2.zero;
            }
            if (_Rig2D.velocity.x < 0 && _axis.x > 0)
            {
                _Rig2D.velocity = Vector2.zero;
            }

            if (_Rig2D.velocity.y > 0 && _axis.y < 0)
            {
                _Rig2D.velocity = Vector2.zero;
            }
            if (_Rig2D.velocity.y < 0 && _axis.y > 0)
            {
                _Rig2D.velocity = Vector2.zero;
            }

            _Rig2D.AddForce(_axis * _realMaxSpeed, ForceMode2D.Impulse);
            _Anim.SetBool("Walking", true);
        }

        if (_facingRight && CheckAxis() < 0)
        {
            Flip();
        }
        if (!_facingRight && CheckAxis() > 0)
        {
            Flip();
        }
    }