我想控制一辆AI赛车,并把它开向玩家赛车。我已经计算了一条通向玩家赛车的路径,但我在获得AI赛车在路径上行驶时应该使用的转向角度时遇到了问题。
汽车是通过-1 :1的转向比来控制的。
这就是我试过的,但车就是绕圈子。
void UpdatePath()
{
NavMesh.CalculatePath(transform.position, _Target.position, 1 << 0, path);
DrawPath();
Vector3 relativePos = path.corners[0] - transform.position;
Quaternion targetRotation = Quaternion.LookRotation(relativePos);
float y = transform.eulerAngles.y;
float DeltaAngle = Mathf.DeltaAngle(y, targetRotation.y);
float delta = Mathf.Clamp(DeltaAngle, -1, 1);
这里有什么想法吗?
谢谢
发布于 2019-07-13 01:08:27
可以使用最小最大规格化。
public float MinMaxNormalization(float point, float MaxPoint, float MinPoint){
float value = (point - MinPoint) / (MaxPoint - MinPoint); // the value is between 0 and 1
value *= 2; // now the value is between 0 and 2
value -= 1; // now the value is between -1 and 1
return value;
}
我假设MaxPoint = 90.0f,MinPoint = -90.0f,所以
float MaxPoint = 90.0f;
float MinPoint = -90.0f;
float delta;
delta = MinMaxNormalization(90, MaxPoint , MinPoint); //delta will be 1
delta = MinMaxNormalization(0, MaxPoint , MinPoint); // delta will bi 0
delta = MinMaxNormalization(-90, MaxPoint , MinPoint); // delta will be -1
delta = MinMaxNormalization(45, MaxPoint , MinPoint); // delta will be 0.5
delta = MinMaxNormalization(-45, MaxPoint , MinPoint); // delta will be -0.5
https://stackoverflow.com/questions/57014930
复制