尝试在世界空间中找到HingeJoint2D.anchor时,为什么会得到不正确的向量?

时间:2018-10-14 04:45:59

标签: unity3d

在现场,我有一长串孩子,他们通过铰链连接到他们的父母。对于我的代码,我需要铰链锚点在世界空间中的位置,因此我使用:

public Vector2 hingeVector => hinge.anchor + (Vector2)gameObject.transform.position;

对于第一个铰链,该代码给出了正确的位置。但是第二次发生这种情况:

anchor position I get (red) vs actual anchor (blue)

红色点是我得到的矢量,蓝色点是实际位置。如您所见,这是一个很小的差异,但仍然存在问题。

有什么办法可以解决这个问题?我在网上找不到类似的东西。

1 个答案:

答案 0 :(得分:1)

您需要添加对象的旋转度

锚点值是与轴对齐的,并且不受旋转的影响,但是为了计算世界空间中的锚点,知道变换的位置,您需要旋转锚点值对象的旋转然后将其添加到以下位置:

Vector2 p = hinge.anchor.Rotate(gameObject.transform.rotation.eulerAngles.z)
              + (Vector2)gameObject.transform.position;