0
正如你在上面的圖片中看到,比利,我們的小橙色打扮的人,在屏幕會到左側,並出現在右側。
這是我想要發生的,但是,我似乎無法複製這種效果(我在Paint.net中得到了一些修改的圖片)。
基本上,如果玩家的x位置是負值,它應該換到另一邊。如果x大於寬度,它應該包裝到左側。
謝謝!
正如你在上面的圖片中看到,比利,我們的小橙色打扮的人,在屏幕會到左側,並出現在右側。
這是我想要發生的,但是,我似乎無法複製這種效果(我在Paint.net中得到了一些修改的圖片)。
基本上,如果玩家的x位置是負值,它應該換到另一邊。如果x大於寬度,它應該包裝到左側。
謝謝!
當你需要時畫兩遍。
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;
}
當然,你必須記住這一點,當你檢查與玩家碰撞時,你也必須檢查兩個位置。
我問過[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
另外請記住,我鏈接的解決方案是針對* every *方向的一般包裝行爲,這是一個非常複雜的問題。如果你只需要水平包裝,你可以簡化流程*很多*。或者你可以畫出你的角色三次,它們之間有一個屏幕寬度的偏移量。 – 2011-12-30 12:18:04