统一;控制角度的PhysX关节,同时尊重碰撞

时间:2015-06-26 18:44:33

标签: math unity3d 3d

我有一个类似手臂的物体,有2个可配置的关节,依次连接到运动基座。每个关节都配置为围绕单个轴的旋转关节。

每个关节都可以由用户移动,当涉及碰撞时会出现问题。设置每个关节的所需角度,但是如果路上有物体,关节将继续尝试移动到目标角度,无论碰撞如何,该角度都会继续增加。

如果现在移动关节2使得关节1现在能够移动到其目标角度,则会产生捕捉动作并且是不合需要的。

在链接的Unity包中是我试图解决这个问题。我将实际的关节角度与所需的角度进行比较,如果它们的差异超过某个阈值,则所需的值会缓和。这适用于joint1,但是对于joint2存在问题,即使我试图允许旋转其父关节。

我希望可能有不同的方法来解决这个问题。我尝试过使用方向性目标角速度'而不是设置所需的目标旋转,但是我需要关节以恒定速度移动,并且当使用“目标角速度”时。这很难实现重力(需要继续)和其他问题影响速度。

网络播放器:http://beinginsight.co.uk/questions/JointAngleProblem/

UnityPackage:http://beinginsight.co.uk/questions/JointAngleProblem/JointAngleProblem.unitypackage

键:   joint1:Q / A.   第2节:W / S

我认为这将是一个微不足道的问题,但似乎我花了一个时间试图让它正常工作。

提前感谢您的任何帮助。

PS:正如你在包中看到的那样,我一直在尝试一些不同的方法,但都无济于事,这里有一些代码可以吸引你的帮助;

MATCH (john:Person { name:"John" })-[:friend *1..2]->(friend: Person)
RETURN friend.name, friend.age;

1 个答案:

答案 0 :(得分:0)

一旦你在刚体上设置位置,旋转,关节角度或几乎任何东西而不使用像addForce这样的物理命令,那么它至少会打破物理引擎模拟至少那个帧。执行此操作的最佳方法是使用addForce,或者在这种情况下,我认为AddTorque是合适的。只要注意对增加的扭矩量进行帧率调整,最好使用FixedUpdate。