【发布时间】:2016-04-12 18:53:08
【问题描述】:
我正在玩 Google Cardboard。我坐在驾驶舱里,可以毫无问题地环顾四周。
现在我想将我的驾驶舱从一侧倾斜到另一侧,以获得更真实的感觉,而不仅仅是静止不动。
到目前为止,我有这个:
using UnityEngine;
using System.Collections;
public class Tilt : MonoBehaviour
{
float speed = 0.25f;
void Update()
{
Tilter ();
}
void Tilter()
{
if (transform.rotation.z < 5f) {
transform.Rotate (new Vector3 (0f, 0f, speed));
}
if (transform.rotation.z > 5f)
transform.Rotate (new Vector3 (0f, 0f, -speed));
}
}
这开始按预期将驾驶舱向左倾斜,但是一旦旋转大于 5 的值,驾驶舱就不会向另一个方向旋转,它会继续以相同的方式旋转,而不是相反的方向。
【问题讨论】:
-
您的代码中存在的一个逻辑问题是,即使它完美运行,您的旋转最终也会锁定在 z=5。当它超过 5 时,它会回到 5 ......当它稍微低于它时,它会回到和高于 5。这将在 5 附近无限振荡,基本上是一种振动(幅度取决于
speed)。这是你的意图吗? -
@Tom 这是一个很好的问题。你为什么删除它?问题解决了吗?
-
@Programmer 我输入了大约 15 分钟,然后才意识到我在检查器中分配了错误的东西 -.- 只是一个愚蠢的错误!你认为我应该把它留下来,把我尴尬的答案放进去吗? :')
-
大声笑。没有答案很尴尬。我正要回答它,然后事情就关闭了。我很想知道为什么。没关系。无论哪种方式,我的回答都行不通。祝你的游戏好运。
-
@Programmer 我想对我来说是漫长的一天!谢谢,期待您的帮助! :-)