如何使对象移动到C#XNA中的另一个对象

时间:2013-12-11 11:43:09

标签: c# matrix xna position angle

我目前正试图让一个物体向另一个物体移动。到目前为止,我已经有了这个代码来尝试实现它。

double angleRad = Math.Atan2(mdlPosition.Z+treeTransform.Translation.Z, mdlPosition.X-treeTransform.Translation.X);

enemyPos.X += (float)Math.Cos(angleRad) * 0.2f;
enemyPos.Z += (float)Math.Sin(angleRad) * 0.2f;

每当我移动我的玩家角色时,对象会移动,但不会移动到角色的当前位置。如何将其指向当前位置?

2 个答案:

答案 0 :(得分:1)

通常你应该这样做。我想你希望敌人会向玩家移动。

Vector2 dir = player.Position - enemy.Position;
dir.Normalize();

现在你只需要做每个周期:

enemy.Position += dir * speed;

修改

要使敌人面对玩家,请尝试计算dir的角度并将其设置为您的绘制调用的rotation参数。您应该使用Math.Atan2(dir.Y, dir.X)

实现此目的

答案 1 :(得分:0)

伪代码中的一些东西。

Direction = Enemy.Position - Player.Position
Direction.Normalize()
Enemy.Position += Direction * Speed