【发布时间】:2019-07-19 23:26:24
【问题描述】:
所以,我有两个游戏对象P1 和P2,这两个游戏对象分别与我左腿和右腿上的跟踪器相关联。
所以,我需要找到它们之间的角度。
所以,这就是我的P1 和P2 如果我面朝前并把我的右腿放在前面的样子。
private double calculateAngle(double P1X, double P1Y, double P2X, double P2Y,
double P3X, double P3Y)
{
double numerator = P2Y * (P1X - P3X) + P1Y * (P3X - P2X) + P3Y * (P2X - P1X);
double denominator = (P2X - P1X) * (P1X - P3X) + (P2Y - P1Y) * (P1Y - P3Y);
double ratio = numerator / denominator;
double angleRad = Math.Atan(ratio);
double angleDeg = (angleRad * 180) / Math.PI;
if (angleDeg < 0)
{
angleDeg = 180 + angleDeg;
}
return angleDeg;
}
calculateAngle(LeftLegController.position.x, LeftLegController.position.z,
RightLegController.position.x, RightLegController.position.z,
LeftLegController.position.x, RightLegController.position.z))
因此,它应该始终是直角三角形。
所以,这是我用来计算P1 和P2 之间角度的代码,
当我面向前方时,我的两个游戏对象之间的角度不同,而当我面向左侧并将右腿向前移动时(看起来像这样)
我的Angle 1 和Angle 2 将完全不同。那么,找到角度的更好方法是什么(忽略y轴,就好像点投影在地面上一样)
【问题讨论】:
标签: unity3d math vector virtual-reality angle