我的游戏中有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有关,我已经尝试更改计算,但是字符似乎确实以不同方式旋转,而不是在当前方向
答案 0 :(得分:0)
Xna有一个内置功能,你可能会在这里找到方便。
Matrix.CreateWorld(positionVector, DirectionVector, UpVector);
这是doc: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);
}
}