我的脚本几乎可以完美运行,但是我只需要固定这个浮点数,我似乎不知道怎么做。
简化版...
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);
但没有运气。
感谢您的帮助。
答案 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
逻辑进行操作,这并不是解决问题的最有效方法。希望这会有所帮助!