我尝试在Unity中沿z轴旋转父游戏对象,以便该对象的子对象面向某个目标点。
只要子对象的位置被置零,这段代码就可以工作。脚本被附加到父对象,我正在一个2D项目中工作。
Vector3 parentDir = (targetPoint - transform.position).normalized;
offset = Vector2.SignedAngle(transform.right, child.transform.right);
float rotationZ = (Mathf.Atan2(parentDir .y, parentDir .x) * Mathf.Rad2Deg) - offset;
transform.rotation = Quaternion.Euler(0, 0, rotationZ);
然而,当子节点的位置不为零时,对于offset
值,显然不足以计算父节点和子节点的x轴之间的带符号Angular ,但我无法完全理解这个问题。
This answer looks promising,但我似乎无法将它的三维部分转换为二维。
先谢了!
1条答案
按热度按时间wnavrhmk1#