我有一个根据鼠标位置旋转的物体,但我想要将它夹住,使其不会超过或低于某个值。这是我的代码:
void LookAt () {
float distance = transform.position.z - Camera.main.transform.position.z;
Vector3 position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance);
position = Camera.main.ScreenToWorldPoint(position);
position.x = Mathf.Clamp(position.x, -70, 70);
position.z = Mathf.Clamp(position.z, -70, 70);
Vector3 target = new Vector3 (position.x, transform.position.y, position.z); // Use current object positin.y
transform.LookAt(target);
}
但不幸的是,它不起作用,它一直在旋转360.
编辑: 这是一个3D自上而下的游戏,我有一个坦克,我想旋转它的上半部分。我上面写的代码非常适合这项工作,但现在我不知道如何限制它,因此枪管(我旋转的部分)总是朝向敌人来自的地方。 70或者其他只是我正在测试的随机值,首先我想要确定正确的代码是什么,然后确定值是容易的部分。
答案 0 :(得分:0)
实际上,问题是你要夹住一个位置,而不是一个旋转。你让它看到某一点,但限制了这一点,而不是为了满足它而需要旋转的角度。您必须使用三角法计算它想要指向的角度(更具体地说,atan2函数),将值值钳位到(-70,70),然后应用 旋转到物体(使用欧拉角)。您是否需要进一步澄清这些步骤?
干杯。
P.S。请注意,atan2返回弧度值,但您的范围和欧拉角度使用度数。