【发布时间】:2012-05-16 01:19:26
【问题描述】:
我正在尝试统一旋转 3D 游戏对象。它实际上是一个圆柱体,上面只有一个扑克筹码的纹理。一旦它与光线投射相撞,我想将它旋转 360 度。它在 Unity 仿真器中工作得很好,但是,在设备本身上,芯片在其旋转后停止,然后继续在无限循环中旋转。这是有问题的代码的sn-p。提前感谢您的帮助。
// Spin the chip
if (Animate) {
if (Speed > 0 && Chip.tag.Contains("Chip")) {
Chip.transform.Rotate(0, Speed*Time.deltaTime, 0);
Speed -= 3;
Debug.Log(Speed);
}
else {
// Reset
Animate = false;
Speed = 360;
Chip.transform.localRotation = Quaternion.Euler(0.0,0.0,0.0);
}
}
为了总结这一点,我可以尽我所能,当它在光线投射上碰撞时分配游戏对象芯片
// Set the chip
Chip = hit.transform;
一切都在更新函数中完成。一旦光线投射命中,它就会调用一个投注函数,然后在计算投注后,它将布尔动画更改为 true,从而导致芯片旋转。
【问题讨论】:
-
debug.log 告诉你什么?
-
Debug.Log(Speed) 只是向我显示正在倒计时的整数速度。
-
它是 0 吗? 0点后继续?
-
是的,它的命中为零,如果不命中也没关系,因为如果它大于 0,所以如果它跳过 0 并命中 -1,它仍然会中断到 else。它在模拟器中运行良好,只是在设备上没有。
标签: animation unity3d unityscript