Example #1
0
 private void DoSpecial(Vector2 inputVector, IsometricCharacterRenderer isoRenderer, string animatedString)
 {
     if (animatedString == "zxx")
     {
         LinearBullet spawned = Instantiate <LinearBullet>(normalRangedAttackPrefab);
         spawned.Setup(transform.position, (Vector2)transform.position + IntDirectionToVector(isoRenderer.LastDirection), 0.25f, 40);
     }
 }
Example #2
0
    private void SpawnBullet(Transform bullet, Refractor side)
    {
        Transform    b  = Instantiate(bullet, side.spawnPoint.position, side.spawnPoint.rotation);
        LinearBullet lb = b.GetComponent <LinearBullet>();

        lb.Seek(side.GetDirection());
        lb.initialDecayTimer *= 0.75f;
        lb.decayTimer         = lb.initialDecayTimer;
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        Vector3 myPos = new Vector3(transform.position.x, transform.position.y, 0);

        if (timer == 0)
        {
            LinearBullet bullet1 = Instantiate(bul, myPos, Quaternion.identity);
            bullet1.angle     = angle;
            bullet1.moveSpeed = projspeed;
            timer             = interval;
        }
        else
        {
            timer--;
        }
    }
Example #4
0
 private void RapidShootPerFrame()
 {
     if (currentState == BossState.Shoot && shootState == ShootState.Rapid)
     {
         if (shootCounter > rapidShootRateFrame)
         {
             //shoot
             LinearBullet spawned = Instantiate <LinearBullet>(basicBullet);
             spawned.Setup(spawner1.transform.position, player.transform.position, basicBulletVelocity, basicBulletDamage);
             animator.Play("attack_FULL");
             shootCounter = 0;
         }
         else
         {
             shootCounter++;
         }
     }
 }
Example #5
0
 private void StarShootPerFrame()
 {
     if (currentState == BossState.Shoot && shootState == ShootState.Star)
     {
         if (shootCounter > rapidShootRateFrame)
         {
             //shoot
             for (int i = 0; i < starDirections.Count; i++)
             {
                 LinearBullet spawned     = Instantiate <LinearBullet>(basicBullet);
                 Vector2      targetPoint = (Vector2)spawner1.transform.position + starDirections[i];
                 animator.Play("attack_FULL");
                 spawned.Setup(spawner1.transform.position, targetPoint, basicBulletVelocity, basicBulletDamage);
             }
             shootCounter = 0;
         }
         else
         {
             shootCounter++;
         }
     }
 }
Example #6
0
    // Update is called once per frame
    void Update()
    {
        if (_fireIn <= 0 && _remain > 0)
        {
            int i = 0;
            foreach (var bullet in BulletPool.Instance.Request(chunk))
            {
                LinearBullet behavior = bullet.GetComponent <LinearBullet>();
                behavior.angle = _firingAngle + _angleOffset * i + Random.Range(-modifier, modifier);
                behavior.speed = 32f;
                behavior.OnSpawn(gameObject);

                ++i;
            }

            _firingAngle += rotate;
            _fireIn       = reload;
            _remain      -= chunk;
        }
        else
        {
            --_fireIn;
        }
    }
Example #7
0
 private void StateMachineRunningPerFrame()
 {
     BasicRangeState nextState = BasicRangeState.Idle;
     if (currentState == BasicRangeState.Meet)
     {
         if (canAttack)
         {
             LinearBullet spawned = Instantiate<LinearBullet>(linearBullet);
             spawned.Setup(transform.position, player.transform.position, bulletVelocity, damage);
             canAttack = false;
         }
         if (!IsPlayerInMeetRange()) nextState = BasicRangeState.Idle;
         else if (IsPlayerInEscapeRange()) nextState = BasicRangeState.Escape;
         else nextState = BasicRangeState.Meet;
     }
     else if (currentState == BasicRangeState.Escape)
     {
         if (!IsPlayerInMeetRange()) nextState = BasicRangeState.Idle;
         else if (!IsPlayerInEscapeRange()) nextState = BasicRangeState.Meet;
         else nextState = BasicRangeState.Escape;
     }
     else if (currentState == BasicRangeState.Death)
     {
         if (stateCounter >= deathFrame)
         {
             nextState = BasicRangeState.Death;
             monsterHealth.Die();
         }
         else
         {
             stateCounter++;
             nextState = BasicRangeState.Death;
         }
     }
     else if (currentState == BasicRangeState.Hurt)
     {
         if (stateCounter >= hurtFrame)
         {
             nextState = BasicRangeState.Meet;
         }
         else
         {
             stateCounter++;
             nextState = BasicRangeState.Hurt;
         }
     }
     else
     {
         // Check if meet
         if (IsPlayerInMeetRange()) nextState = BasicRangeState.Meet;
         else nextState = BasicRangeState.Idle;
     }
     if (currentState != BasicRangeState.Hurt && monsterHealth.IsHurt)
     {
         nextState = BasicRangeState.Hurt;
     }
     if (currentState != BasicRangeState.Death && monsterHealth.IsDie)
     {
         nextState = BasicRangeState.Death;
     }
     if(nextState != currentState) changeState(nextState);
 }
Example #8
0
    // Update is called once per frame
    void Update()
    {
        //Antiquated.  Keeping just in case.
        // Collider2D[] hitColliders = Physics2D.OverlapCircleAll(transform.position, 20);
        // int i = 0;
        // while (i < hitColliders.Length)
        // {
        //     if (hitColliders[i].CompareTag("Player"))
        //         player = hitColliders[i].gameObject;
        //     i++;
        // }
        if (lagTime == 0)
        {
            Vector3 myPos = new Vector3(transform.position.x, transform.position.y, 0);
            if (hp <= 0)
            {
                KeyScript k = Instantiate(key, myPos, Quaternion.identity);
                g.k = k;
                Destroy(this.gameObject);
            }
            if (waitTime > 0)
            {
                waitTime--;
            }
            else
            {
                Vector3 playerPos = new Vector3(player.transform.position.x, player.transform.position.y, 0);
                Vector3 direction = (playerPos - GetComponent <Rigidbody2D>().transform.position);
                // EnemyBulletScript projectile = Instantiate(obj, myPos, Quaternion.identity);
                // projectile.setTarget(player);
                waitTime = interval;
                float bulletDirection = Mathf.Atan(direction.y / direction.x);
                if (direction.y >= 0 && direction.x <= 0)
                {
                    bulletDirection += 3.141f;
                }
                if (direction.y <= 0 && direction.x <= 0)
                {
                    bulletDirection += 3.141f;
                }
                LinearBullet sneaky1 = Instantiate(bul, myPos, Quaternion.identity);
                sneaky1.angle = bulletDirection + Random.Range(0.0f, 0.6f) * mod;
            }
            Vector3 playerPoss = new Vector3(player.transform.position.x, player.transform.position.y, 0);
            Vector3 directions = (playerPoss - GetComponent <Rigidbody2D>().transform.position);
            GetComponent <Rigidbody2D>().velocity = directions * moveSpeed;
            LinearBullet bullet1 = Instantiate(bul, myPos, Quaternion.identity);
            bullet1.angle = angle;
            angle        += (angleChange) * mod;
            LinearBullet bullet2 = Instantiate(bul, myPos, Quaternion.identity);
            bullet2.angle = angle;
            angle        += (angleChange) * mod;
            LinearBullet bullet3 = Instantiate(bul, myPos, Quaternion.identity);
            bullet3.angle = angle;
            angle        += (angleChange) * mod;
            LinearBullet bullet4 = Instantiate(bul, myPos, Quaternion.identity);
            bullet4.angle = angle;
            angle        += (angleChange) * mod;
            LinearBullet bullet5 = Instantiate(bul, myPos, Quaternion.identity);
            bullet5.angle = angle;
            angle        += (angleChange) * mod;
            LinearBullet bullet6 = Instantiate(bul, myPos, Quaternion.identity);
            bullet6.angle = angle;
            angle        += (angleChange) * mod;
            modTime--;
            if (modTime <= 0)
            {
                mod     = mod * -1.00003f;
                modTime = Random.Range(200, 1000);
            }

            //Mathf.PI / 4.0f) + 0.01f
        }
        else
        {
            lagTime--;
        }
    }