我遇到了一个小问题。
我制作了一个 3D 立方体并设置了 GoogleVR SDK,以便在 VR 屏幕的中点进入立方体时使用事件触发器。发生这种情况时,我的自定义方法LookAtCube()
被触发。
我希望它使立方体保持旋转。我可以用 旋转transform.Rotate-function
,但问题是它只旋转 1 个游戏刻度(我认为),因为我触发的事件是“指针输入”。
我的问题:
当在对撞机的距离内时,是否有可以触发的事件继续执行给定的方法?(例如,当看立方体时它应该旋转,当不看时它不应该旋转)。
我试图用一个 while(true)-loop 来解决这个问题,但游戏只是崩溃了。
例如,在 PC/独立应用程序上,您可以简单地使用私有方法 OnMouseOver()。我想要这个,但随后是 VR 屏幕的焦点(中点)。
这是我迄今为止尝试过的(2个例子):
第一个例子:它只是旋转了一点然后停止(所以我猜它以设定的速度旋转了 1 个游戏刻)。
using UnityEngine;
public class MoveCube : MonoBehaviour
{
float rotateSpeed = 0.5f;
// Use this for initialization
void Start()
{
}
public void LookAtCube()
{
transform.Rotate(new Vector3(rotateSpeed, rotateSpeed, rotateSpeed));
}
public void LookOutCube()
{
transform.Rotate(new Vector3(0, 0, 0));
}
}
第二个例子:我使用了一个布尔值,在进入/退出多维数据集时分别设置了真/假。然后while循环应该让它保持旋转,但是游戏崩溃了(看不到错误消息,因为它完全崩溃了,但我猜是溢出)。
using UnityEngine;
public class MoveCube : MonoBehaviour
{
float rotateSpeed = 0.5f;
Boolean hoverState = false;
// Use this for initialization
void Start()
{
}
public void LookAtCube()
{
while(hoverState == true){
transform.Rotate(new Vector3(rotateSpeed, rotateSpeed, rotateSpeed));
}
}
public void LookOutCube()
{
hoverState = false;
transform.Rotate(new Vector3(0, 0, 0));
}
}
关于如何正确实施它的任何想法?提前致谢!