我想在我的DirectX應用程序中實現一個簡單的AI系統。我試圖讓我的Ai旋轉並面對我希望它面對的方向,這是我設法做的,但無法弄清楚如何讓它確定如何旋轉到給定的方向(即它應該如何向左旋轉還是向右旋轉?)。如何計算旋轉的方向?
下面是代碼我有能夠統計出需要轉動的去面對它給方向的角度:
D3DXVECTOR3 incident = destination - position;
float top = D3DXVec3Dot(&incident, &forwardVec);
float bottom = sqrt((incident.x * incident.x) + (incident.y * incident.y) + (incident.z * incident.z)) *
sqrt((forwardVec.x * forwardVec.x) + (forwardVec.y * forwardVec.y) + (forwardVec.z * forwardVec.z));
float remainingAngle = acos(top/bottom) * 180.0f/PI;
的forwardVec
是哪種方式的AI目前正面臨着D3DXVECTOR3
。
新方法:使用4象限'atan2(y,x)'而不是2象限'acos(x)'。不知道如何讓你的'x,y'。 – chux