我的游戏中有NPC,它们按照脚本在游戏中随机移动。不过,我希望他们能直面前进的方向。
for (int i = 0; i < GameConstants.NumDaleks; i++)
{
if (dalekList[i].isActive)
{
Vector3 line = dalekList[i].direction;
float rotationDal = (float)(Math.Atan2(dalekList[i].position.Y, dalekList[i].position.X) / (2 * Math.PI));
Matrix dalekTransform = Matrix.CreateScale(GameConstants.DalekScalar) * Matrix.CreateRotationY(rotationDal) * Matrix.CreateTranslation(dalekList[i].position);
DrawModel(mdlDalek, dalekTransform, mdDalekTransforms);
}
}
我确信这一定与rotationDal有关,我尝试过更改计算,但字符的旋转方式似乎不同,只是不在当前方向
Xna有一个内置函数,您可能会在这里找到它。
Matrix.CreateWorld(positionVector, DirectionVector, UpVector);
这是医生:http://msdn.microsoft.com/en-us/library/bb975261(v=xnagamestudio.40).aspx
在您的情况下:
for (int i = 0; i < GameConstants.NumDaleks; i++)
{
if (dalekList[i].isActive)
{
Matrix dalekTransform = Matrix.CreateScale(GameConstants.DalekScalar) * Matrix.CreateWorld(dalekList[i].position, dalekList[i].direction, Vector3.Up);
DrawModel(mdlDalek, dalekTransform, mdDalekTransforms);
}
}