Unity 点击物体触发延迟旋转:仅旋转一次
在Unity中可以使用以下方法实现点击一个物体后另一个物体在2秒内旋转90度且之后无论点击多少次只旋转一次:
-
创建一个脚本文件,例如'RotateObject.cs',将其附加到被点击的物体上。
-
在脚本中定义一个布尔变量
isRotating,用于判断是否正在进行旋转。
public bool isRotating = false;
- 在Update函数中检测鼠标点击事件,并在点击时触发旋转。
void Update()
{
if (Input.GetMouseButtonDown(0) && !isRotating)
{
StartCoroutine(RotateCoroutine());
}
}
- 创建一个协程函数
RotateCoroutine(),用于控制旋转的过程。
IEnumerator RotateCoroutine()
{
isRotating = true;
// 旋转90度的目标角度
Quaternion targetRotation = Quaternion.Euler(transform.rotation.eulerAngles + new Vector3(0, 90, 0));
// 旋转耗时2秒
float duration = 2f;
float elapsedTime = 0f;
while (elapsedTime < duration)
{
// 插值计算当前旋转角度
transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, elapsedTime / duration);
elapsedTime += Time.deltaTime;
yield return null;
}
// 旋转完成后将isRotating设置为false,防止再次触发旋转
isRotating = false;
}
这样,当点击被附加脚本的物体时,另一个物体将会在2秒内旋转90度,并且之后无论点击多少次,都只会旋转一次。
原文地址: https://www.cveoy.top/t/topic/jxMg 著作权归作者所有。请勿转载和采集!