Exemple #1
0
 public static void DoEnemySpawned(EnemyMissile _enemy)
 {
     if (OnEnemySpawned != null)
     {
         OnEnemySpawned(_enemy);
     }
 }
Exemple #2
0
 void OnEnemySpawned(EnemyMissile _enemy)
 {
     if (!lockOn)
     {
         enemies.Enqueue(_enemy);
     }
 }
Exemple #3
0
    //何かにぶつかった時に呼ばれる
    void OnCollisionEnter(Collision other)
    {
        if (other.gameObject.tag == "EnemyBullet")
        {
            //弾の攻撃力とか取るためのやつ
            EnemyBullet Bullet = other.gameObject.GetComponent <EnemyBullet>();

            //乱数を得る
            int Damage = Bullet.getAttackPower() + Bullet.getErrorRange();

            //シールド値を減らす
            Sys.setHP(Sys.getHP() - Damage);
        }
        if (other.gameObject.tag == "EnemyMissile")
        {
            if (Sys.getRollingFlagA() == 0 && Sys.getRollingFlagD() == 0)
            {
                //弾の攻撃力とか取るためのやつ
                EnemyMissile Missile = other.gameObject.GetComponent <EnemyMissile>();

                //乱数を得る
                int Damage = Missile.getAttackPower() + Missile.getErrorRange();

                //シールド値を減らす
                Sys.setHP(Sys.getHP() - Damage);
            }
        }
    }
Exemple #4
0
    protected override void Awake()
    {
        base.Awake();

        _EnemyCharacter = GetComponent <EnemyCharacter>();

        _EnemyMissilePrefab = ResourceManager.Instance.LoadResource <GameObject>(
            "EnemyMissile",
            "Prefabs/Missile/EnemyMissile").GetComponent <EnemyMissile>();
    }
    public void Shoot(Vector3 end)
    {
        transform.LookAt(end);
        float time = (end - transform.position).magnitude / speed;

        LeanTween.move(gameObject, end, time);
        Delayed.Action(gameObject, () => {
            EnemyMissile.DestroyMissilesWithin(end, destroyRadius);
            Instantiate <GameObject>(explosionPrefab, end, Quaternion.identity);
            Destroy(gameObject, 0.01f);
        }, time);
    }
 // Update is called once per frame
 void Update()
 {
     if (Time.fixedTime >= nextShot)
     {
         //create missile at current position, headed along the spawner's
         GameObject   o = Instantiate(Enemy, transform.position, Quaternion.identity) as GameObject;
         EnemyMissile e = o.GetComponent <EnemyMissile>();
         //Fire a shot along the y-axis of the spawner, at speed speed
         e.InitEnemy(transform.right, speed, missileTimeOut);
         //update time of next shot
         nextShot = Time.fixedTime + interval;
     }
 }
Exemple #7
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        EnemyMissile enemy   = other.gameObject.GetComponent <EnemyMissile>();
        Missile      missile = other.gameObject.GetComponent <Missile>();

        if (enemy != null)
        {
            enemy.DestroyEnemyMissile();
        }
        if (missile != null)
        {
            missile.Explode();
        }
    }
    public void CheckCollisionLoop(PlayerExplosion explosion)
    {
        enemyMissiles = EnemyMissilePool.Instance.ObjectList;

        for (int i = 0; i < enemyMissiles.Count; i++)
        {
            EnemyMissile missile = enemyMissiles[i];

            if (CheckCollision(explosion.gameObject, missile.gameObject, 1.0f))
            {
                missile.ExplodeAndReturnToPool();
            }
        }
    }
Exemple #9
0
 //射击方法
 void Shooting()
 {
     //实例化_missile
     _tempMis = Instantiate(_missile);
     _tempMis.SetActive(true);//设置可显式
     //在Unity加一个新标签
     _tempMis.tag = "EnemyMissile";
     //敌机子弹放在父物体上
     _tempMis.transform.SetParent(transform);
     _tempMis.transform.localPosition = Vector3.zero;
     _tempMis.transform.localScale    = Vector3.one;
     _tempMis.transform.localRotation = new Quaternion();
     _tempEnemMis = _tempMis.AddComponent <EnemyMissile>();
     //调用敌机死亡后 子弹继续存在的方法
     _tempEnemMis.Inst();
 }
Exemple #10
0
    private void SetRocket(GameObject rocket)
    {
        EnemyMissile missle = rocket.GetComponent <EnemyMissile>();

        missle.startingPoint = startingPoint;
        missle.startingPoint = startingPoint;
        missle.velocity      = velocity;
        if (WhenEnemyRocketDiesDelegate != null)
        {
            rocket.GetComponent <HealthComponent>().BeforeObjectDies += WhenEnemyRocketDiesDelegate;
        }
        if (accelerator > 0)
        {
            missle.accelerator = accelerator;
        }
    }
    void OnEnemySpawned(EnemyMissile _enemy)
    {
        if (!disabled.Value)
        {
            EnemyGroupBundle[] currentEnemyGroups = waveBundles[waveIndex].enemyGroupBundles;

            if (enemyGroupsIndex == currentEnemyGroups.Length - 1 &&
                enemiesInGroupIndex == waveBundles[waveIndex].enemyGroupBundles[enemyGroupsIndex].count - 1)
            {
                SpawnEnemy.Ins.stopSpawning = true;
                return;
            }

            if (++enemiesInGroupIndex == currentEnemyGroups[enemyGroupsIndex].count)
            {
                ++enemyGroupsIndex;
                enemiesInGroupIndex = 0;
            }
        }
    }
Exemple #12
0
    public IEnumerator SpawnMissiles()
    {
        while (missilesToSpawnThisRound > 0)
        {
            float randomX = Random.Range(minX, maxX);

            Vector3 dir   = missilePrefab.transform.position - transform.position;
            float   angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
            transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

            Vector3      spawnPosition = new Vector3(randomX, yValue + Yscreen, 0);
            GameObject   missile       = Instantiate(missilePrefab, new Vector3(randomX, yValue + Yscreen, 0), Quaternion.identity);
            EnemyMissile enemyMissile  = missile.GetComponent <EnemyMissile>();
            enemyMissile.StartingLocation = spawnPosition;

            missilesToSpawnThisRound--;

            yield return(new WaitForSeconds(delayBetweenMissiles));
        }
    }
    void SpawnEnemy_3()
    {
        spawnTimer += Time.deltaTime;
        if (spawnTimer >= spawnTime)
        {
            spawnTimer = 0;

            var cannons = GlobalManager.cannons;

            Cannon       randCannon = cannons[Random.Range(0, cannons.Count)];
            EnemyMissile enemy      = Instantiate(prefabDefaultEnemy).GetComponent <EnemyMissile>();
            enemy.transform.position = new Vector3(
                randCannon.transform.position.x
                , ManageSceneSetup.Ins.spawnVerticalRange.y
                , ManageSceneSetup.Ins.playField.transform.position.z);
            enemy.transform.LookAt(randCannon.transform.position);
            enemy.SetDest(randCannon.transform.position);

            GameEventSignals.DoEnemySpawned(enemy);
        }
    }
Exemple #14
0
    void FixedUpdate()
    {
        //敵のミサイル処理
        Missile = GameObject.FindGameObjectsWithTag("EnemyMissile");

        //非表示
        MissileText.color = new Color(0f, 0f, 0f, 0f);

        Flag = 0;
        Min  = 1000000000;

        if (Missile != null)
        {
            for (int i = 0; i < Missile.Length; i = i + 1)
            {
                EnemyMissile MissileSys = Missile[i].GetComponent <EnemyMissile>();

                if (MissileSys.getPassingFlag() == 0)
                {
                    //表示
                    MissileText.color = new Color(1f, 0.5f, 0f, 1f);
                    Distance          = (Missile[i].GetComponent <Transform>().position - Jet.transform.position).magnitude;
                    Flag = 1;

                    if (Distance < Min)
                    {
                        Min = Distance;
                    }
                }
                else
                {
                    Flag = 0;
                }
            }
        }

        // テキストの表示を入れ替える
        MissileText.text = "" + Min.ToString("f0");
    }
 // Update is called once per frame
 void Update()
 {
     if (preDelay > 0f)
     {
         preDelay -= Time.deltaTime;
         return;
     }
     shootTimer -= Time.deltaTime;
     if (shootTimer < 0f)
     {
         City c = City.RandomCity();
         if (null != c)
         {
             EnemyMissile newMissile = Instantiate(missilePrefab).GetComponent <EnemyMissile>();
             newMissile.transform.position  = transform.position;
             newMissile.transform.position += new Vector3(-0.5f + Random.value, 0f, -0.5f + Random.value) * 3f;
             newMissile.Shoot(c);
         }
         shootTimer    = appxInterval * Random.Range(0.9f, 1.1f);
         appxInterval *= 0.95f;
     }
 }
    void SpawnEnemy_2()
    {
        spawnTimer += Time.deltaTime;
        if (spawnTimer >= ManageWave.Ins.enemySpawnTime)
        {
            spawnTimer = 0;

            var cannons     = GlobalManager.cannons;
            var waveManager = ManageWave.Ins;

            Cannon       randCannon = cannons[Random.Range(0, cannons.Count)];
            EnemyMissile enemy      = Instantiate(
                waveManager.waveBundles[waveManager.waveIndex].enemyGroupBundles[waveManager.enemyGroupsIndex].prefab).GetComponent <EnemyMissile>();
            enemy.transform.position = new Vector3(
                Random.Range(ManageSceneSetup.Ins.spawnHorizontalRange.x, ManageSceneSetup.Ins.spawnHorizontalRange.y)
                , ManageSceneSetup.Ins.spawnVerticalRange.y
                , ManageSceneSetup.Ins.playField.transform.position.z);
            enemy.transform.LookAt(randCannon.transform.position);
            enemy.SetDest(randCannon.transform.position);

            GameEventSignals.DoEnemySpawned(enemy);
        }
    }
Exemple #17
0
 public void Update(double time)
 {
     listNode = Engine.instance.NodeListByType[typeof(ShootEnemyNode)];
     foreach (ShootEnemyNode n in listNode)
     {
         n.ShootComponent.TimeSinceLastShoot += time;
         if (n.ShootComponent.TimeSinceLastShoot >= n.ShootComponent.FireRate)
         {
             int probabilty = this.random.Next(0, 200000);//Changer le maximum pour diminuer la proba de tirer
             if (probabilty < n.ShootComponent.NextShootProbability)
             {
                 n.ShootComponent.NextShootProbability = n.ShootComponent.ShootBaseProbability;
                 n.ShootComponent.TimeSinceLastShoot   = 0;
                 Vecteur2D    posMissile = n.EnemyPosition.Position + new Vecteur2D(15, 24);
                 EnemyMissile missile    = new EnemyMissile(posMissile);
                 Engine.instance.AddEntity(missile);
             }
             else
             {
                 n.ShootComponent.NextShootProbability += 1;
             }
         }
     }
 }
    public static void DestroyMissilesWithin(Vector3 point, float radius)
    {
        float sqrRad = radius * radius;

        for (int i = 0; i < missileInstances.Count; i++)
        {
            EnemyMissile em = missileInstances[i];
            if (null == em)
            {
                missileInstances.RemoveAt(i);
                i--;
                continue;
            }
            if ((em.transform.position - point).sqrMagnitude < sqrRad)
            {
                missilesBlownUp++;
                Instantiate <GameObject>(em.explosionPrefab, em.transform.position, Quaternion.identity);
                Destroy(em.gameObject);
                missileInstances.RemoveAt(i);
                i--;
                continue;
            }
        }
    }
Exemple #19
0
    private IEnumerator Shot()
    {
        yield return(new WaitForSeconds(InitializationTime));

        while (true)
        {
            for (int i = 0; i < ChainNum; i++)
            {
                for (int j = FirstBulletNum; j <= LastBulletNum; j++)
                {
                    GameObject   g  = Instantiate(EnemyMissilePrefab, transform.position, Quaternion.identity) as GameObject;
                    EnemyMissile em = g.GetComponent <EnemyMissile>();
                    parents = transform.parent.gameObject;
                    //enemyとの差をとり、単位ベクトル化する
                    Vector2 direction = (transform.position - parents.transform.position).normalized;
                    //ベクトルに回転をかけて向きを変える
                    direction = Quaternion.Euler(0.0f, 0.0f, Degree * j) * direction;
                    em.SetMissile(parents.transform.position, direction, Speed);
                }
                yield return(new WaitForSeconds(ChainRestoreTime));
            }
            yield return(new WaitForSeconds(RestoreTime));
        }
    }
    protected override void SpawnMissiles()
    {
        Vector3      randomPointInCamera = Camera.main.ScreenToWorldPoint(new Vector2(Random.Range(0, Screen.width), Screen.height));
        GameObject   missile             = m_pooler.GetClone();
        EnemyMissile eMissile            = missile.GetComponent <EnemyMissile>();

        missile.transform.position = new Vector3(randomPointInCamera.x, randomPointInCamera.y, 0f);

        Vector3 targetPosition          = Vector3.zero;
        Vector3 defaultPositionInCamera = new Vector3
                                          (
            missile.transform.position.x,
            0f,
            missile.transform.position.z
                                          );
        int randomTargetIndex = Random.Range(0, m_listOfTargets.Count - 1);

        targetPosition = m_listOfTargets[randomTargetIndex].transform.position;

        missile.transform.LookAt(defaultPositionInCamera, Vector3.back);
        eMissile.ReadyMissile(this, targetPosition);
        missile.SetActive(true);
        m_releaseInterval = m_releaseHolder;
    }
Exemple #21
0
        private void Gameplay_Update(int GameState, GameTime pGameTime, ContentManager Content)
        {
            if (keyboard != previousKeyboard && keyboard.IsKeyDown(Keys.Escape) && pause)
            {
                this.Game_State = 0;
            }

            if (keyboard.IsKeyDown(Keys.Escape))
            {
                pause      = true;
                this.Pause = mstate.Position;
            }


            if (keyboard != previousKeyboard && keyboard.IsKeyDown(Keys.Enter) && pause)
            {
                pause = false;
                Mouse.SetPosition(Pause.X, Pause.Y);
            }

            if (!pause)
            {
                foreach (Enemy var1 in enemyFighter)
                {
                    var1.Update(pGameTime);
                }
                foreach (Sprite HUD in hud)
                {
                    HUD.Update(pGameTime);
                }
                foreach (Right_HUD R_H in R_hud)
                {
                    R_H.Update(pGameTime);
                }

                SSV.Update(pGameTime);
                cone.Update(pGameTime);

                //Enemies Update
                foreach (Fighter Enemies in EnemyFighter)
                {
                    Point ID = Enemies.Update(pGameTime);
                    if (ID != Point.Zero)
                    {
                        TargetID = ID;
                    }
                    Enemies.UpdatePositionAngle(cone);
                    if (Enemies.FireWeapon)
                    {
                        int i = 0;
                        if (EnemyMissile.Count != 0)
                        {
                            while (i < EnemyMissile.Count && EnemyMissile[i] != null)
                            {
                                i++;
                            }
                        }
                        Missile var = new Missile(content, this, i, new Point(0, 0));
                        EnemyMissile.Insert(i, var);
                        EnemyMissile[i].SpawnAt(Enemies.Position);
                        EnemyMissile[i].SetDestination(new Vector2(640, 360));
                        Enemies.FireWeapon = false;
                    }
                    if (!Enemies.IsActive)
                    {
                        EnemyFighterDump.Add(Enemies);
                    }
                }
                EnemyFighter = EnemyFighter.Except(EnemyFighterDump).ToList();

                foreach (Frigate Enemies in EnemyFrigate)
                {
                    Point ID = Enemies.Update(pGameTime);
                    if (ID != Point.Zero)
                    {
                        TargetID = ID;
                    }
                    Enemies.UpdatePositionAngle(cone);
                    if (Enemies.FireWeapon)
                    {
                        int i = 0;
                        if (EnemySlug.Count != 0)
                        {
                            while (i < EnemySlug.Count && EnemySlug[i] != null)
                            {
                                i++;
                            }
                        }
                        Slug var = new Slug(content, this);
                        EnemySlug.Insert(i, var);
                        EnemySlug[i].SpawnAt(Enemies.Position);
                        EnemySlug[i].SetDestination(new Vector2(640, 360));
                        Enemies.FireWeapon = false;
                    }
                    if (!Enemies.IsActive)
                    {
                        EnemyFrigateDump.Add(Enemies);
                    }
                }
                EnemyFrigate = EnemyFrigate.Except(EnemyFrigateDump).ToList();

                foreach (Carrier Enemies in EnemyCarrier)
                {
                    Point ID = Enemies.Update(pGameTime);
                    if (ID != Point.Zero)
                    {
                        TargetID = ID;
                    }
                    Enemies.UpdatePositionAngle(cone);
                    if (Enemies.FireWeapon)
                    {
                        AddFigther(content, Enemies.Position, new Vector2(640, 360));
                        Enemies.FireWeapon = false;
                    }
                    if (!Enemies.IsActive)
                    {
                        EnemyCarrierDump.Add(Enemies);
                    }
                }
                EnemyCarrier = EnemyCarrier.Except(EnemyCarrierDump).ToList();

                foreach (Dreadnought Enemies in EnemyDreadnought)
                {
                    Point ID = Enemies.Update(pGameTime);
                    if (ID != Point.Zero)
                    {
                        TargetID = ID;
                    }
                    Enemies.UpdatePositionAngle(cone);
                    if (Enemies.FireWeapon)
                    {
                        int i = 0;
                        if (EnemyCannon.Count != 0)
                        {
                            while (i < EnemyCannon.Count && EnemyCannon[i] != null)
                            {
                                i++;
                            }
                        }
                        Cannon var = new Cannon(content, this, new Point(0, 0), 10);
                        EnemyCannon.Insert(i, var);
                        EnemyCannon[i].SpawnAt(Enemies.Position);
                        Enemies.FireWeapon = false;
                    }
                    if (!Enemies.IsActive)
                    {
                        EnemyDreadnoughtDump.Add(Enemies);
                    }
                }
                EnemyDreadnought = EnemyDreadnought.Except(EnemyDreadnoughtDump).ToList();

                //endEnemies Update

                //Weapons Update

                foreach (Missile Missile in EnemyMissile)
                {
                    Point ID = Missile.Update(GetPositionByID(Missile.TargetID));
                    if (ID != Point.Zero)
                    {
                        TargetID = ID;
                    }

                    if (Missile.Friendly == false && Missile.IsMoving == false)
                    {
                        Missile.Destroy = true;
                        enemyMissileDump.Add(Missile);
                        HB_hp -= 1;
                    }
                    else if (Missile.Friendly && !Missile.IsMoving)
                    {
                        DamageTarget(Missile.TargetID, 1);
                    }
                }

                enemyMissile = enemyMissile.Except(enemyMissileDump).ToList();

                foreach (Laser Lsr in Lasers)
                {
                    Lsr.Update();
                }

                foreach (Slug Slug in EnemySlug)
                {
                    Slug.Update();

                    if (Slug.Friendly == false && Slug.IsMoving == false)
                    {
                        Slug.Destroy = true;
                        enemySlugDump.Add(Slug);
                        HB_hp -= 5;
                    }
                    else if (Slug.Friendly && !Slug.IsMoving)
                    {
                        DamageTarget(Slug.TargetID, 2);
                    }
                }

                enemySlug = enemySlug.Except(enemySlugDump).ToList();

                foreach (Cannon Cannon in EnemyCannon)
                {
                    Cannon.Update();

                    //Add destroy here.
                }

                enemySlug = enemySlug.Except(enemySlugDump).ToList();

                //endWeapons Update

                ladar.Update(pGameTime, cone.Lockin, cone.stopAngle_M);

                if (SpawnBlock == 200)
                {
                    SpawnEnemy(Content);
                    SpawnBlock = 0;
                }
                else
                {
                    SpawnBlock += 1;
                }

                //PlayerWeapons

                PlayerWpn[0].Update();
                PlayerWpn[1].Update();
                PlayerWpn[2].Update();
                PlayerWpn[3].Update();
                PlayerWpn[4].Update();

                if (keyboard.IsKeyDown(Keys.D1))
                {
                    if (PlayerWpn[0].CanFire)
                    {
                        int i = 0;
                        if (EnemyMissile.Count != 0)
                        {
                            while (i < EnemyMissile.Count && EnemyMissile[i] != null)
                            {
                                i++;
                            }
                        }
                        Missile var = new Missile(content, this, i, TargetID);
                        EnemyMissile.Insert(i, var);
                        EnemyMissile[i].SpawnAt(new Vector2(640, 360));
                        EnemyMissile[i].SetDestination(GetPositionByID(TargetID));
                        EnemyMissile[i].Friendly = true;
                        PlayerWpn[0].FireWeapon();
                    }
                }
                else if (keyboard.IsKeyDown(Keys.D2))
                {
                    if (PlayerWpn[1].CanFire)
                    {
                        int i = 0;
                        if (Lasers.Count != 0)
                        {
                            while (i < Lasers.Count && Lasers[i] != null)
                            {
                                i++;
                            }
                        }
                        Laser var = new Laser(content, this, TargetID, 10);
                        Lasers.Insert(i, var);
                        Lasers[i].SpawnAt(new Vector2(640, 360));
                        PlayerWpn[1].FireWeapon();
                    }
                }
                else if (keyboard.IsKeyDown(Keys.D3))
                {
                    if (PlayerWpn[2].CanFire)
                    {
                        int i = 0;
                        if (EnemySlug.Count != 0)
                        {
                            while (i < EnemySlug.Count && EnemySlug[i] != null)
                            {
                                i++;
                            }
                        }
                        Slug var = new Slug(content, this);
                        EnemySlug.Insert(i, var);
                        EnemySlug[i].SpawnAt(new Vector2(640, 360));
                        EnemySlug[i].SetDestination(GetPositionByID(TargetID));
                        PlayerWpn[2].FireWeapon();
                    }
                }
                else if (keyboard.IsKeyDown(Keys.D4))
                {
                    if (PlayerWpn[3].CanFire)
                    {
                        int i = 0;
                        if (EnemyCannon.Count != 0)
                        {
                            while (i < EnemyCannon.Count && EnemyCannon[i] != null)
                            {
                                i++;
                            }
                        }
                        Cannon var = new Cannon(content, this, TargetID, 10);
                        EnemyCannon.Insert(i, var);
                        EnemyCannon[i].SpawnAt(new Vector2(640, 360));
                        PlayerWpn[3].FireWeapon();
                        DamageTarget(TargetID, 3);
                    }
                }
                else if (keyboard.IsKeyDown(Keys.D5))
                {
                    if (PlayerWpn[4].CanFire)
                    {
                        foreach (Fighter var1 in EnemyFighter)
                        {
                            DamageTarget(var1.ID, 4);
                        }
                        foreach (Frigate var1 in EnemyFrigate)
                        {
                            DamageTarget(var1.ID, 4);
                        }
                        foreach (Carrier var1 in EnemyCarrier)
                        {
                            DamageTarget(var1.ID, 4);
                        }
                        foreach (Dreadnought var1 in EnemyDreadnought)
                        {
                            DamageTarget(var1.ID, 4);
                        }
                    }
                }

                //End Player Weapons

                //Dreadnought Countdown
                foreach (Dreadnought Dreadnought in EnemyDreadnought)
                {
                    if (Dreadnought.IsMoving == false)
                    {
                        Dreadnought.cannonCountdown -= 1;
                        //Console.WriteLine(Dreadnought.cannonCountdown);
                    }

                    if (Dreadnought.cannonCountdown == 0)
                    {
                        Dreadnought.cannonCountdown = 100;
                    }
                }
                //end Dreadnought Countdown
            }
        }
 void ResetEntireGame()
 {
     EnemyMissile.ResetState();
     City.ResetState();
     SceneManager.LoadScene(0);
 }