Gamemaker工作室的基本碰撞问题

我对游戏devise界真的很陌生,所以我很抱歉,如果这个问题是愚蠢的,但在这里呢! 我有三个对象,一个是玩家控制的方块,一个是方块应该碰撞的不能通过的墙,另一个是方块不能通过的地板。 当我创建对象时,我尝试过使用“实体”和“使用物理”特性,但无法正确地碰撞它们。 任何想法,将不胜感激。 你能帮我吗?

这个方法适用于我:

if (keyboard_check(ord('W') && place_free(x,y-1)) { y -= 1; } if (keyboard_check(ord('A') && place_free(x-1,y)) { x -= 1; } if (keyboard_check(ord('S') && place_free(x,y+1)) { y += 1; } if (keyboard_check(ord('D') && place_free(x+1,y)) { x += 1; } 

正如你所看到的,这是通常的WASD移动代码,但是这次我添加了place_free(x,y) ,它检查x和y与固体对象的碰撞。

在这种情况下,我会检查是否会有一个坚实的对象,无论哪个球员将在下一个碰撞。 如果没有碰撞检测又名“免费的地方?” 或者“这个地方没有任何固体物体吗?” 那么玩家将会移动。 否则,玩家不会因为碰撞而移动。

place_meeting(x,y,obj)是您select的对象的替代检查,并且不必是实体。 如果你不想让你的Wall或Floor对象变得稳定,那么你可以用place_free(x,y)replaceplace_free(x,y) 。 像这样的place_meeting(x,y-1,objWall)例如。