Ejemplo n.º 1
0
    private void DamageCollisionObject(Collider2D collision)
    {
        BulletBasic bullet = collision.GetComponent<BulletBasic>();
        EnemyHealthController enemy = collision.GetComponent<EnemyHealthController>();

        if (bullet != null)
            Destroy(bullet.gameObject);

        if (enemy != null)
            enemy.Damage(PlayerAmmoDamage * OnCollisionEnemyDamageMult);
    }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        Collider[]      hitColliders  = Physics.OverlapSphere(transform.position, searchRadius, LayerMask.GetMask("Monster"));
        List <Collider> lockColliders = new List <Collider> ();

        int minHp   = 0;
        int LockIdx = -1;

        for (int i = 0; i < hitColliders.Length; i++)
        {
            Collider tmpCollider = hitColliders[i];
            var      monster     = tmpCollider.gameObject.GetComponent <MonsterAI>();
            if (monster)
            {
                int checkHp = monster.getHp();
                if ((checkHp < minHp || minHp == 0) && checkHp > 0)
                {
                    minHp = monster.getHp();
                    if (lockMonster == null || lockMonster.GetInstanceID() != monster.GetInstanceID())
                    {
                        startFire = Time.time + startRate;
                    }

                    lockMonster = monster;
                    LockIdx     = i;
                }

                if (BulletType.Equals("tesla") && checkHp > 0)
                {
                    lockColliders.Add(tmpCollider);
                }
            }
        }
        // 根據等級取得目前砲台資料
        Fort fort = fort_list [level];

        ShotSpwan = fort.transform.position + new Vector3(0.0F, 0.5f + level / 10, 0.0F);

        if (LockIdx >= 0)
        {
            Collider LockCollider = hitColliders [LockIdx];
            if (Time.time > nextFire && Time.time > startFire)
            {
                nextFire = Time.time + fort.FireRate;
                // 射出型子彈
                if (fort.Speed > 0)
                {
                    createBullet(LockCollider, fort);
                    // 持續特效型子彈
                }
                else if (fort.Speed == 0)
                {
                    if (bullet == null)
                    {
                        bullet = createBullet(LockCollider, fort);
                    }

                    if (BulletType.Equals("tesla"))
                    {
                        foreach (Collider lockcollider in lockColliders)
                        {
                            bullet.setDamage(lockcollider);
                        }
                    }
                    else
                    {
                        bullet.setDamage(LockCollider);
                    }
                }
            }
        }
        else
        {
            // 關閉持續特效型子彈特效
            if (fort.Speed == 0 && bullet != null)
            {
                bullet.SetDisable();
                BulletManager.Retrieve(bullet);
                bullet = null;
            }
        }
    }