unity如果敌人发现角色,则角色三秒内头顶有一个感叹号!的脚本
时间: 2024-03-23 18:42:39 浏览: 112
unity 脚本
好的,根据您的需求,我可以为您提供一个简单的Unity脚本,用于实现敌人发现角色后在角色头顶显示感叹号的效果。以下是示例代码:
```
using UnityEngine;
using System.Collections;
public class EnemyDetection : MonoBehaviour
{
public GameObject exclamationMark; // 感叹号对象
public float detectionDistance = 10f; // 检测距离
public float detectionAngle = 45f; // 检测角度
private Transform player; // 角色对象
private bool playerDetected = false; // 是否检测到角色
void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform; // 获取角色对象
exclamationMark.SetActive(false); // 隐藏感叹号对象
}
void Update()
{
if (playerDetected)
{
// 如果检测到角色,显示感叹号对象
exclamationMark.SetActive(true);
}
else
{
// 否则隐藏感叹号对象
exclamationMark.SetActive(false);
}
}
void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "Player")
{
// 计算敌人与角色之间的距离和角度差
Vector3 direction = other.transform.position - transform.position;
float distance = direction.magnitude;
float angle = Vector3.Angle(direction, transform.forward);
// 如果角度小于检测角度,距离小于检测距离,则检测到角色
if (angle < detectionAngle && distance < detectionDistance)
{
playerDetected = true;
}
else
{
playerDetected = false;
}
}
}
}
```
在这个脚本中,我们使用了Unity的碰撞检测来检测敌人是否发现了角色。当角色进入敌人的检测范围内时,如果角度小于检测角度,距离小于检测距离,则认为敌人已经发现了角色。此时,在角色头顶显示感叹号对象。
您可以将该脚本挂载到敌人对象上,并将感叹号对象作为该脚本的一个公共变量进行设置。希望这个脚本可以帮助到您。
阅读全文