如何进行基于瓦片的碰撞检测

我正在尝试制作一个简单的平台游戏,显然我需要瓷砖碰撞。我目前拥有的代码问题在于它首先移动角色,然后检查是否与某些物体发生碰撞,但有时它会在错误的时间检测到碰撞,这取决于我是否首先检查x轴的碰撞还是首先检查y轴的碰撞。我这样做是否有问题?下面是一些代码。

点赞
用户2238176
用户2238176
本语句涉及到 Lua 代码,将其翻译如下:

local tileX = math.ceil(val/absoluteTileSize)

local tileY = math.floor(oldPos/absoluteTileSize)

你使用 math.ceil 进行 x 值的计算,使用 math.floor 进行 y 值的计算,这可能是你遇到奇怪情况的原因之一。我建议你使用下面的调试技巧:

-- 由于你使用 LÖVE 引擎,应该使用下面的代码: love.graphics.setColor( 255, 0, 0, 255 ) love.graphics.rectangle( 'line', ( tileX - 1 ) * absoluteTileSize, ( tileY - 1 ) * absoluteTileSize, absoluteTileSize, absoluteTileSize ) -- 这里假设 absoluteTileSize 表示瓷砖的宽度/高度?

```

将此代码插入绘图函数的末尾,将在玩家当前所在的“瓷砖”中绘制一个红色框。

2014-06-02 02:00:51