unity开发塔防游戏的点击后需要检测是否点击到怪物如果是会让怪物掉血功能代码设置不能频繁点击需要一个冷却时间
以下是示例代码:
public class Tower : MonoBehaviour {
public float damage = 10f; //攻击力
public float attackCooldown = 1f; //攻击冷却时间
private bool canAttack = true; //是否能攻击
void Update () {
if (!canAttack) {
//冷却时间未结束,更新剩余时间
attackCooldown -= Time.deltaTime;
if (attackCooldown <= 0f) {
//冷却时间结束,可以攻击
canAttack = true;
attackCooldown = 1f; //重置冷却时间
}
}
}
void OnMouseDown () {
if (canAttack) {
//检测是否点击到怪物
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.zero);
if (hit.collider != null && hit.collider.tag == "Monster") {
//击中怪物,让怪物掉血
hit.collider.GetComponent<Monster>().TakeDamage(damage);
canAttack = false; //开始攻击冷却
}
}
}
}
上述代码中,Tower脚本挂载在防御塔上,当玩家点击防御塔时会触发OnMouseDown函数。在该函数中,首先检测是否处于攻击冷却状态(canAttack),如果是则无法攻击,否则检测是否点击到了怪物。使用Physics2D.Raycast函数进行射线检测,如果击中了怪物,则获取怪物的Monster组件并调用TakeDamage函数让其掉血。最后设置canAttack为false开始攻击冷却时间,并在Update函数中更新冷却时间,直到冷却时间结束才能再次攻击
原文地址: http://www.cveoy.top/t/topic/fEeT 著作权归作者所有。请勿转载和采集!