对象在 -z 和 -x 角的 z 轴上翻转 180 度
Object flips 180 degrees on z-axis in -z and -x corner
基本上我有一个旋转的对象。这是一种单击和拖动类型的旋转,但是当对象面向 -z -x 角或左下角时,再次单击时它有机会以相反的方式完全翻转 180 度。这很麻烦,我什至知道这是发生在哪一行。这是点击代码:
void OnMouseDown()
{
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
baseAngle = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg;
baseAngle -= Mathf.Atan2(transform.right.y, transform.up.x) * Mathf.Rad2Deg;
startRotation = transform.rotation;
}
baseAngle -= Mathf.Atan2(transform.right.y, transform.up.x) * Mathf.Rad2Deg;
^^^ 最让我头疼的是这一行。我试过玩弄“.x”和“.z”结尾,但我就是想不通。当我用“.z”切换“.x”时,问题就出现在右下角。如果我什至弄乱了“.y”,我只会离我想要的更远。
图片:
顺便说一句,Z轴是垂直向上,X轴是水平向右。任何帮助表示赞赏。
问题似乎是我错过了 .x、.y 和 .z 的组合。当我尝试用 "transform.up.y" 替换 "transform.up.x" 时,我不再遇到这个问题。
基本上我有一个旋转的对象。这是一种单击和拖动类型的旋转,但是当对象面向 -z -x 角或左下角时,再次单击时它有机会以相反的方式完全翻转 180 度。这很麻烦,我什至知道这是发生在哪一行。这是点击代码:
void OnMouseDown()
{
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
baseAngle = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg;
baseAngle -= Mathf.Atan2(transform.right.y, transform.up.x) * Mathf.Rad2Deg;
startRotation = transform.rotation;
}
baseAngle -= Mathf.Atan2(transform.right.y, transform.up.x) * Mathf.Rad2Deg;
^^^ 最让我头疼的是这一行。我试过玩弄“.x”和“.z”结尾,但我就是想不通。当我用“.z”切换“.x”时,问题就出现在右下角。如果我什至弄乱了“.y”,我只会离我想要的更远。
图片:
顺便说一句,Z轴是垂直向上,X轴是水平向右。任何帮助表示赞赏。
问题似乎是我错过了 .x、.y 和 .z 的组合。当我尝试用 "transform.up.y" 替换 "transform.up.x" 时,我不再遇到这个问题。