Unity 定时检测相机距离,当小于一定距离触发,设置触发间隔
时间: 2023-08-24 22:07:19 浏览: 152
在Unity中测量显示空间距离
在 Unity 中实现定时检测相机距离并设置触发间隔,可以使用协程(Coroutine)来实现。协程可以让我们在代码中设置一定时间间隔的等待,从而实现定时执行某些操作的效果。
以下是一个例子,每隔 0.5 秒检测一次相机与物体之间的距离,当距离小于 10 时输出一条信息:
```csharp
using UnityEngine;
using System.Collections;
public class DistanceCheck : MonoBehaviour
{
public float checkInterval = 0.5f; // 触发间隔
public float triggerDistance = 10f; // 触发距离
private IEnumerator coroutine;
void Start()
{
coroutine = CheckDistance();
StartCoroutine(coroutine);
}
void OnDisable()
{
StopCoroutine(coroutine);
}
IEnumerator CheckDistance()
{
while (true)
{
float distance = Vector3.Distance(transform.position, Camera.main.transform.position);
if (distance < triggerDistance)
{
Debug.Log("Camera is too close!");
}
yield return new WaitForSeconds(checkInterval);
}
}
}
```
在 Start 方法中启动协程 CheckDistance,该协程会每隔 checkInterval 秒检测一次相机与物体之间的距离,并当距离小于 triggerDistance 时输出一条信息。在 OnDisable 方法中停止协程,以避免在对象被禁用时仍然执行协程。
阅读全文