我的游戏中有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有关,我已经尝试过更改计算,字符的旋转看起来确实不同,只是不按当前的方向旋转。
发布于 2013-12-11 14:30:27
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);
}
}https://stackoverflow.com/questions/20515572
复制相似问题