gpt4 book ai didi

c# - 如何在凝视时保持旋转 GameObject?

转载 作者:行者123 更新时间:2023-11-29 23:27:19 26 4
gpt4 key购买 nike

我遇到了一个小问题。

我制作了一个 3D 立方体并设置了 GoogleVR SDK,以便在 VR 屏幕的中点进入立方体时使用事件触发器。发生这种情况时,将触发我的自定义方法 LookAtCube()

我想让立方体一直旋转。我可以使用 transform.Rotate-function 进行旋转,但问题是它只旋转 1 个游戏刻度(我认为),因为我触发的事件是“Pointer Enter”。


我的问题:

是否有一个事件可以触发,当处于对撞机的距离内时继续执行给定的方法? (例如,当看立方体时它应该旋转,当不看它时它不应该旋转)。

我试图用 while(true) 循环来解决这个问题,但游戏只是崩溃了。

例如,在 PC/独立应用程序上,您可以简单地使用私有(private)方法 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));
}
}

第二个例子: 我使用了一个 bool 值,在进入/退出多维数据集时分别设置为 true/false。然后 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));
}
}

关于如何正确实现它的任何想法?提前致谢!

最佳答案

你会在这里遇到无限循环:

while(hoverState == true)
{
transform.Rotate(new Vector3(rotateSpeed, rotateSpeed, rotateSpeed));
}

那是因为您没有等待帧,其他脚本将没有机会运行。

您需要使用 Update 函数,因为它会在每一帧运行。将 hoverState 设置为 true “Pointer Enter” 事件和 false 在“Pointer Exit” 事件中然后使用 hoverState 更新函数以确定何时旋转游戏对象。

float rotateSpeed = 0.5f;
bool hoverState = false;


public void LookAtCube()
{
hoverState = true;
}

public void LookOutCube()
{
hoverState = false;
}

void Update()
{
if (hoverState)
transform.Rotate(new Vector3(rotateSpeed, rotateSpeed, rotateSpeed));
}

关于c# - 如何在凝视时保持旋转 GameObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com