Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua Love2D基于平铺的碰撞不起作用_Lua_Collision Detection_Tile_Love2d - Fatal编程技术网

Lua Love2D基于平铺的碰撞不起作用

Lua Love2D基于平铺的碰撞不起作用,lua,collision-detection,tile,love2d,Lua,Collision Detection,Tile,Love2d,我在瓷砖碰撞方法中遇到问题。由于某种原因,玩家可以在不应该通过的时候通过一些瓷砖。另外,我也不完全确定为什么,但当它卡住时,它可以在物体中向左移动,但只能向左移动。我在下面发布了一些代码,如果有人能给我指出正确的方向,那就太好了。(如果有人能找到一个快速的解决方案,甚至更好!)我的播放器移动方法和平铺碰撞方法都在更新方法中调用 贴图和平铺碰撞 左边的原因是,当它被卡住时,可能是因为您在testTile(x,y)的第4条if语句中有一个输入错误 你写的 if map[y][x - 1] ~= 1

我在瓷砖碰撞方法中遇到问题。由于某种原因,玩家可以在不应该通过的时候通过一些瓷砖。另外,我也不完全确定为什么,但当它卡住时,它可以在物体中向左移动,但只能向左移动。我在下面发布了一些代码,如果有人能给我指出正确的方向,那就太好了。(如果有人能找到一个快速的解决方案,甚至更好!)我的播放器移动方法和平铺碰撞方法都在更新方法中调用

贴图和平铺碰撞
左边的原因是,当它被卡住时,可能是因为您在
testTile(x,y)
的第4条
if
语句中有一个输入错误

你写的

if map[y][x - 1] ~= 1 then
    canRight = false
end
应该是这样

if map[y][x - 1] ~= 1 then
    canLeft = false
end

原因是键入错误:

if map[y][x - 1] ~= 1 then
    canRight = false;
end
如果不能向左移动
则将
canRight
设置为
false
。这可能是复制/粘贴错误,因此 如果复制/粘贴代码,请务必小心。这是最常见的错误之一,而且这种错误很难发现:P

另一个小建议:不要使用

if map[y][x - 1] == 1 then
    canLeft = true;
end
if map[y][x - 1] ~= 1 then
    canLeft = false;
end
你可以用

else canLeft = false;

这将使代码更短,而且在我看来也更干净。

欢迎使用StackOverflow。在为问题分配标签时请小心,并检查此网站上的说明。例如,由于这是一个面向专业程序员和其他程序员的网站,因此RPG标签指的是主要由专业程序员使用的RPG语言,而不是游戏玩家的松散术语。
else canLeft = false;