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); }
// 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; } } }