在Unity中可以使用以下方法实现点击一个物体后另一个物体在2秒内旋转90度且之后无论点击多少次只旋转一次:

  1. 创建一个脚本文件,例如'RotateObject.cs',将其附加到被点击的物体上。

  2. 在脚本中定义一个布尔变量isRotating,用于判断是否正在进行旋转。

public bool isRotating = false;
  1. 在Update函数中检测鼠标点击事件,并在点击时触发旋转。
void Update()
{
    if (Input.GetMouseButtonDown(0) && !isRotating)
    {
        StartCoroutine(RotateCoroutine());
    }
}
  1. 创建一个协程函数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度,并且之后无论点击多少次,都只会旋转一次。

Unity 点击物体触发延迟旋转:仅旋转一次

原文地址: https://www.cveoy.top/t/topic/jxMg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录