【发布时间】:2019-07-26 01:13:00
【问题描述】:
使用提供的图表,我知道:
- 位置 A 的字符,面向 B (posA)
- 对象位于位置 B (posB),面向随机方向。
- C 的期望角度 (20) (desiredAngle),基于 A 到 B 的方向。
- B 到 C 的距离
我将如何找到 C 的位置?
在下面的代码中,我设法得到了向量 BC,现在如何使用从 A 到 B 的距离沿该向量定义一个点?
//The angle of the hand in relation to the object
public float angleFromPlayer = -60f;
//Get the direction vector from the selectedObject to the actor
Vector3 objectDirectionToActor = actorParent.position - selectedObjectCenter;
//Make it horizontal (Flatten the y)
objectDirectionToActor.y = 0;
//Get the rotated vector using the desiredAngle
Vector3 rotatedVector = Quaternion.Euler(0, angleFromPlayer, 0) * objectDirectionToActor;
【问题讨论】:
-
这不是一道数学题吗?基本上:使用
Atan得到线BA相对于0的角度。加/减所需的角度,并使用Sin和Cos加上角度和长度BC来计算C的位置(不要忘记将位置 B 添加到结果中)。不要忘记 C# 的Math处理的是弧度,而不是度数。 -
@Castor
Vector3来自哪里?Mathf是什么? -
看起来您使用的是度数而不是desiredAngle,因为从未指定度数。
-
通过减去两个点,然后将得到的增量除以斜边来获取方向。这将为您提供标准化的方向。然后你可以简单地将它乘以你想要的任何距离,比如 0.1f 并将它添加到起点 B。
-
@Bart 谢谢你让我知道。我从原始问题中删除了答案,并按照建议将其添加到下面。