用unity写一个宠物自动攻击敌人的代码
时间: 2023-03-27 20:01:40 浏览: 199
你好,以下是用 Unity 编写宠物自动攻击敌人的代码:
```
using UnityEngine;
public class PetAttack : MonoBehaviour
{
public float attackRange = 2f; // 攻击范围
public float attackInterval = 1f; // 攻击间隔
public LayerMask enemyLayer; // 敌人层级
private float lastAttackTime; // 上次攻击时间
private void Update()
{
// 检测是否有敌人在攻击范围内
Collider[] enemies = Physics.OverlapSphere(transform.position, attackRange, enemyLayer);
if (enemies.Length > )
{
// 获取最近的敌人
Transform nearestEnemy = GetNearestEnemy(enemies);
// 判断攻击间隔是否到达
if (Time.time - lastAttackTime > attackInterval)
{
// 攻击敌人
Attack(nearestEnemy);
// 更新上次攻击时间
lastAttackTime = Time.time;
}
}
}
// 获取最近的敌人
private Transform GetNearestEnemy(Collider[] enemies)
{
Transform nearestEnemy = null;
float nearestDistance = Mathf.Infinity;
foreach (Collider enemy in enemies)
{
float distance = Vector3.Distance(transform.position, enemy.transform.position);
if (distance < nearestDistance)
{
nearestEnemy = enemy.transform;
nearestDistance = distance;
}
}
return nearestEnemy;
}
// 攻击敌人
private void Attack(Transform enemy)
{
Debug.Log("攻击敌人:" + enemy.name);
// TODO: 完成攻击逻辑
}
// 绘制攻击范围
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, attackRange);
}
}
```
希望能对你有所帮助。