2011-12-30 71 views
0

enter image description here包装绘制的图像

正如你在上面的图片中看到,比利,我们的小橙色打扮的人,在屏幕会到左侧,并出现在右侧。

这是我想要发生的,但是,我似乎无法复制这种效果(我在Paint.net中得到了一些修改的图片)。

基本上,如果玩家的x位置是负值,它应该换到另一边。如果x大于宽度,它应该包装到左侧。

谢谢!

+1

我问过[this exact question](http://gamedev.stackexchange.com/questions/21143/how-to-create-a-2d-region-where-sprites-are-automatically-wrapped)之前的gamedev部分,并得到了一个很好的答案。 – 2011-12-30 12:14:07

+0

另外请记住,我链接的解决方案是针对* every *方向的一般包装行为,这是一个非常复杂的问题。如果你只需要水平包装,你可以简化流程*很多*。或者你可以画出你的角色三次,它们之间有一个屏幕宽度的偏移量。 – 2011-12-30 12:18:04

回答

1

当你需要时画两遍。

void Draw(SpriteBacth batch) 
{ 
     batch.Draw(Player.texture, Player.Position, player.Source, player.Color); 


     if (Player.X <0) 
     { 
      bacth.Draw(Player.texture, Player.Position + ScreenHorizontalSize, player.Source, Player.Color); 
     } 
     else if (Player.X + Player.Size.Width> ScreenHorizontalSize.Width) 
     { 
      bacth.Draw(Player.texture, Player.Position - ScreenHorizontalSize, player.Source, Player.Color); 
     } 
    } 

    void Update() 
    { 
     if (Player.X < -Player.Size.Width) Player.X += ScreenHorizontalSize.Width; 
     if (Player.X > ScreenHorizontalSize.Width) Player.X -= ScreenHorizontalSize.Width; 
    } 

当然,你必须记住这一点,当你检查与玩家碰撞时,你也必须检查两个位置。