私は、大学のゲームデザインクラスのために、c# xna でトップダウンの 2D RPG ゲームを作成しています。敵をプレイヤーに向けて移動させる単純な AI を作成しようとしています。現在、私のコードは次のとおりです
/// <summary>
/// method to move the enemy
/// </summary>
/// <param name="target">the position of the target</param>
/// <returns>the new position to be moved to</returns>
public virtual Vector2 move(Vector2 target)
{
Vector2 temp = (target - Position); // gets the difference between the target and position
temp.Normalize(); // sets the vector to unit vector
temp *= moveSpeed; // sets the vector to be the length of moveSpeed
float x = temp.X;
float y = temp.Y;
float xP, yP;
double angle = Math.Acos(((x * direction.X) + (y * direction.Y)) / (temp.Length() * direction.Length())); //dot product finds the angle between temp and direction
angle *= agility; //gets the angle to move based on agility
xP = (float)(Math.Cos(angle) * (x - direction.X) - Math.Sin(angle) * (y - direction.Y) + x);
yP = (float)(Math.Sin(angle) * (x - direction.X) - Math.Cos(angle) * (y - direction.Y) + y); // these lines rotate the point x,y around the direction vector by angle "angle"
return new Vector2(xP, yP);
}
update メソッドでターゲットが正しく渡されます。
/// <summary>
/// updates the enemy
/// </summary>
public void update()
{
this.Position = move(Game1.player.Position);
}
しかし、敵はまったく動かない。敏捷性と移動速度が 0 でないことを確認するコードをコンストラクターに追加しました。これらの値を変更しても何も起こりません。
助けてくれてありがとう。