旋转父游戏对象
Rotating a parent gameobject
我知道这个问题是重复的,但我已经尝试了所有其他解决方案,但找不到解决这个问题的方法。我将一堆立方体统一设置成一个圆圈,我的目标是当有人按住鼠标时将它们一起旋转,然后捕捉到某个位置。由于有 20 个立方体,我需要它转到最近的 18 度(360/20),以便在与原始圆相同的位置有一个立方体,只是整个圆都转动了。
我已经让立方体一起旋转,但是当我尝试将它们捕捉到最近的 18 度时,它捕捉到一个看似随机的点。我尝试过使用不同的方法,但我不知道哪里出错了!请帮忙!
这是我控制旋转的代码,然后在用户松开后尝试捕捉它(圆圈是所有立方体的父级):
GameObject circle;
void Update(){
if (circle != null) { //if the circle has been assigned, rotate it
circle.transform.Rotate(cam.up, -Input.GetAxis("Mouse X") * rotationSpeed, Space.World);
}
else if (Input.GetMouseButtonDown(0)) { //if clicked, assign the circle
circle = this.GameObject.transform.parent;
}
if (circle != null && Input.GetMouseButtonUp(0)) { //supposed to snap to the right spot, this is the part that isn't working
var rotate = circle.transform.rotation.y;
var newRotate = Mathf.Round((rotate * 360) / 18) * 18;
if (newRotate > 360) { newRotate -= 360; }
else if (newRotate < 0) { newRotate += 360; }
circle.transform.eulerAngles = new Vector3(0, newRotate, 0);
}
}
很多事情看起来很奇怪。
在您显示的代码中,您分配 circle
但您从未 使用 它。为什么需要它?
您是否正在旋转这 20 个立方体的父级,因为这是您应该做的,但您的代码中并不清楚
当您执行 layer.transform.rotation.y
时,您使用 四元数 的 y 值。尝试 layer.transform.eulerAngles.y
。
我知道这个问题是重复的,但我已经尝试了所有其他解决方案,但找不到解决这个问题的方法。我将一堆立方体统一设置成一个圆圈,我的目标是当有人按住鼠标时将它们一起旋转,然后捕捉到某个位置。由于有 20 个立方体,我需要它转到最近的 18 度(360/20),以便在与原始圆相同的位置有一个立方体,只是整个圆都转动了。
我已经让立方体一起旋转,但是当我尝试将它们捕捉到最近的 18 度时,它捕捉到一个看似随机的点。我尝试过使用不同的方法,但我不知道哪里出错了!请帮忙!
这是我控制旋转的代码,然后在用户松开后尝试捕捉它(圆圈是所有立方体的父级):
GameObject circle;
void Update(){
if (circle != null) { //if the circle has been assigned, rotate it
circle.transform.Rotate(cam.up, -Input.GetAxis("Mouse X") * rotationSpeed, Space.World);
}
else if (Input.GetMouseButtonDown(0)) { //if clicked, assign the circle
circle = this.GameObject.transform.parent;
}
if (circle != null && Input.GetMouseButtonUp(0)) { //supposed to snap to the right spot, this is the part that isn't working
var rotate = circle.transform.rotation.y;
var newRotate = Mathf.Round((rotate * 360) / 18) * 18;
if (newRotate > 360) { newRotate -= 360; }
else if (newRotate < 0) { newRotate += 360; }
circle.transform.eulerAngles = new Vector3(0, newRotate, 0);
}
}
很多事情看起来很奇怪。
在您显示的代码中,您分配
circle
但您从未 使用 它。为什么需要它?您是否正在旋转这 20 个立方体的父级,因为这是您应该做的,但您的代码中并不清楚
当您执行
layer.transform.rotation.y
时,您使用 四元数 的 y 值。尝试layer.transform.eulerAngles.y
。