unity 具有攻击范围检测敌人频率与消耗的防御塔代码
时间: 2024-01-16 10:04:42 浏览: 25
以下是一个简单的 Unity 防御塔脚本,它可以检测攻击范围内的敌人并攻击他们。该脚本使用了 OnTriggerEnter 和 OnTriggerExit 函数来检测敌人是否在攻击范围内,并使用了 InvokeRepeating 函数来设置攻击频率。
```csharp
using UnityEngine;
public class Tower : MonoBehaviour
{
public float attackRange = 5f;
public float attackFrequency = 1f;
public int attackPower = 10;
private float attackTimer = 0f;
void Start()
{
InvokeRepeating("Attack", 0f, attackFrequency);
}
void Attack()
{
Collider[] colliders = Physics.OverlapSphere(transform.position, attackRange);
foreach (Collider collider in colliders)
{
if (collider.tag == "Enemy")
{
collider.GetComponent<Enemy>().TakeDamage(attackPower);
}
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Enemy")
{
InvokeRepeating("Attack", 0f, attackFrequency);
}
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Enemy")
{
CancelInvoke("Attack");
}
}
}
```
在此脚本中,我们定义了攻击范围、攻击频率和攻击力。Start 函数使用 InvokeRepeating 函数来重复执行 Attack 函数以设置攻击频率。Attack 函数使用 Physics.OverlapSphere 函数来获取所有在攻击范围内的敌人,然后对每个敌人应用攻击力。
当敌人进入攻击范围时,OnTriggerEnter 函数会调用 InvokeRepeating 函数以设置攻击频率。当敌人离开攻击范围时,OnTriggerExit 函数会调用 CancelInvoke 函数以停止攻击。