从播放器对象创建参数

时间:2014-02-24 12:54:13

标签: c#

这可能看起来像一个愚蠢的问题,但我在将一个参数传递给我的一个类中的构造函数时遇到了麻烦。我创建的对象是一个玩家对象,我试图在我的敌人类中获得它的位置。我试图这样做的原因是因为我希望我的敌人跟随屏幕上的玩家。我在psm中使用c#来创建这个程序。非常需要任何帮助。

这是我的敌人。

public class SmartEnemy:Enemy
{

  private Player player;

    private Vector3 vel, pos;
    private static Random gen= new Random();



    public SmartEnemy (GraphicsContext g, Texture2D t, Vector3 p, float pwr, Player pop) : base(g,t,p,pwr)
    {
        pos = p; 
        player = pop;
        vel = new Vector3 (0, 0, 0);
        sprite.Rotation = 0;
        sprite.Center.X = 0.5f;
        sprite.Center.Y = 0.5f;
    }


public override void Update()
{

    Vector3 playerPos= player.Pos;
    double angle=Math.Atan2(playerPos.Y-sprite.Position.Y,playerPos.X- sprite.Position.X);
    Vector3 vel=new Vector3((float)Math.Cos(angle),(float)Math.Sin(angle),0);
    sprite.Position+=vel;

}
public override void Render()
{
sprite.Render();    
}

}

// } 这是我的Appmain中创建敌人的代码。

pieces.Add (new SmartEnemy(graphics, eTex, new Vector3(gen.Next (200,900), gen.Next (200,900),0),.5f));

1 个答案:

答案 0 :(得分:0)

您的SmartEnemy构造函数需要一个Player对象,但您没有在代码中提供一个:

SmartEnemy(graphics, eTex, new Vector3(gen.Next (200,900), gen.Next (200,900),0),.5f));

创建一个玩家对象并发送:

Player p1 = new Player();
pieces.Add( new SmartEnemy(graphics, eTex, new Vector3(gen.Next (200,900), gen.Next (200,900),0),.5f, p1) );