2011-12-30 100 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; 
    } 

當然,你必須記住這一點,當你檢查與玩家碰撞時,你也必須檢查兩個位置。