unity 具有攻击范围检测敌人频率与消耗的防御塔代码
时间: 2024-01-16 20:04:41 浏览: 134
好的,以下是一个简单的示例代码,可以实现防御塔检测敌人并攻击的功能:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tower : MonoBehaviour
{
public float attackRange = 3f;
public float attackRate = 1f;
public int attackDamage = 10;
public LayerMask enemyLayer;
private float attackTimer = 0f;
private void Update()
{
attackTimer += Time.deltaTime;
if (attackTimer >= attackRate)
{
Collider[] hits = Physics.OverlapSphere(transform.position, attackRange, enemyLayer);
if (hits.Length > 0)
{
Attack(hits[0].gameObject);
}
attackTimer = 0f;
}
}
private void Attack(GameObject enemy)
{
// TODO: 实现攻击逻辑
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, attackRange);
}
}
```
该代码中的 `attackRange` 定义了防御塔的攻击范围,`attackRate` 定义了防御塔的攻击频率,`attackDamage` 定义了防御塔的攻击伤害,`enemyLayer` 定义了敌人的层级。在 `Update()` 函数中,防御塔会每隔一定时间检测攻击范围内的敌人,如果有敌人存在,则攻击第一个敌人。在 `Attack()` 函数中,可以实现防御塔的攻击逻辑。在 `OnDrawGizmosSelected()` 函数中,可以在场景中绘制出防御塔的攻击范围。
阅读全文