用瓷砖进行碰撞检测

Ric*_*ter 0 c# xna

好的,所以我通过以下代码在地图上绘制了瓷砖:

 for (int x = 0; x < WindowsWidth + TextureWidth; x += TextureWidth)
        {
            for (int y = 400; y < WindowsHeight; y += TextureHeight)
            {
                spriteBatch.Draw(Texture, new Rectangle((int)x, (int)y, TextureWidth, TextureHeight), Color.White);
            }
        }
Run Code Online (Sandbox Code Playgroud)

我希望这段代码很好,如果没有,我想听听你的评论.

好吧,所以我不知道如何用这些瓷砖和我的播放器进行矩形碰撞检测.

如果你需要另外的解释,请评论,谢谢.

sco*_*kel 5

如果你想要简单的矩形碰撞检测,Rectangle对象有一个非常好的方法来帮助你(Rectangle.Intersects).拿起你的瓷砖并将它们与角色的矩形相交.您需要优化以不检查地图中的每个图块.既然听起来你是新手,你应该看看Nick Gravelyn的Tile Engine Tutorials. 第一部分在YouTube上.

http://msdn.microsoft.com/en-us/library/bb464123.aspx

  • 请记住,如果你的玩家在棋盘之间离散移动(比如,玩家*是棋盘上像骑士一样的棋子),那么你想在逻辑上对某些背景数据结构进行碰撞检测,而不是屏幕上的实际矩形区域. (6认同)