最后一天,我一直在思考如何计算一个完整的旋转,以及如何使用 SteamVR 的基本圆形驱动器计算一个物体沿 X 轴的完整旋转。
我认为一个简单的 3d 立方体,在旋转路径中关闭网格并带有碰撞代码将是一种准系统的方式,但它似乎甚至没有在物体撞击时注册检测放置立方体,我知道这不是因为我很愚蠢,因为它从项目的工作部分回收了代码。
下面我有一小段代码,它基本上检测对象何时到达旋转结束,然后将 Count 加一。
我的主要问题是有时它会多次计时,如果你能找到正确的位置,你可以把它留在那里,它会继续增加计数。我想知道如何停止它并只增加一个,直到完成另一个完整的旋转?
编辑:为了更清楚,以防有任何混淆,一旦角度在 359 和 360 之间,我希望它增加一次,而目前如果你让角度坐在 359-360 之间的任何地方,它将继续尽管没有进行完全旋转,但在旋转计数中加一,所以我试图弄清楚如何让我的代码只增加一次,一旦将位置重置为零,它就会增加一次,因此不会再发生增量. 它是 VR 中沿 X 轴的曲柄机构。
任何帮助表示赞赏,谢谢!
float Test;
float RotationCount = 0;
// Start is called before the first frame update
void Start()
{
// Test = transform.localRotation.eulerAngles.x;
}
// Update is called once per frame
void Update()
{
if (Test > 359 && Test < 360)
{
Debug.Log("Clocked");
count();
}
else
{
// Debug.Log("Nope");
}
if (Test == 0)
{
Debug.Log("Yes");
}
Test = transform.localRotation.eulerAngles.x;
}
void count()
{
RotationCount++;
}