限制角度之间的铰链联合旋转

时间:2018-10-21 16:24:12

标签: c# unity3d

我的脚本几乎可以完美运行,但是我只需要固定这个浮点数,我似乎不知道怎么做。

简化版...

public HingeJoint doorHinge;
public float rotatedoor = 0.0f;  // Limit this value, min 0 max 120

void Update () {

       float h = Input.GetAxis("Mouse X");
       rotatedoor = rotatedoor + h;


        JointSpring doorSpring = Door.spring;
        doorSpring.targetPosition = rotatedoor;
        Door.spring = doorSpring;
}

我尝试添加最小和最大浮点值,然后使用

rotatedoor = Mathf.Clamp(rotatedoor, minRot, maxRot);

但没有运气。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您已获得有关夹紧它的答案,但您实际上并不需要这样做。

您似乎想为julia>a = :(1 + 2) julia>b = :(2 + 1) julia>a == b false 设置限制。具有JointLimits结构的内置属性,这就是您应该使用的属性。

如下所示:

HingeJoint

答案 1 :(得分:1)

有很多简单的方法可以做到这一点,所以我将在下面列出。

rotatedoor = Math.Max( 0f, Math.Min( 120f, rotatedoor ) );

或者,您可以使用a ternary expression

rotatedoor = (rotatedoor < 0f) ? 0f : (rotatedoor > 120f) ? 120f : value;

或者,您可以使用Unity3D的Mathf.clamp()

rotatedoor = Mathf.clamp( rotatedoor, 0.0f, 120f );

可能还有其他方式可以做到这一点。我想知道是否存在更有效的方法,因为所有这些技术都需要以update逻辑进行操作,这并不是解决问题的最有效方法。希望这会有所帮助!