遇到撞墙问题

Having trouble with wall collisions

我现在正在开发这款游戏(使用 GameMaker Studio 2),我目前正在编写墙壁代码,当我尝试进行水平碰撞时,它运行良好,但当我进行地板碰撞时,我会卡在墙壁和地板

代码如下:

//input

keyRight = keyboard_check(ord("D"));

keyLeft = keyboard_check(ord("A"));

keyUp = keyboard_check(ord("W"));

keyDown = keyboard_check(ord("S"));

// direction

var move2 = (keyDown - keyUp) * vspd;

var move = (keyRight - keyLeft) * hspd;

//collision stuff idk

if place_meeting ( x + move, y ,obj_wall)


move2= 0;

if place_meeting ( x + move2, y ,obj_wall)

move= 0;
    

// comiit

x += move

y += move2

如果有人能告诉我我做错了什么以及如何正确做,请告诉我,我将不胜感激,在此先感谢。

在这两种情况下,您都在检查水平偏移处的墙,并且 move/move2 分配也混淆了。所以,而不是

if place_meeting ( x + move, y ,obj_wall)
    move2= 0;

if place_meeting ( x + move2, y ,obj_wall)
    move= 0;

你可以

if place_meeting ( x + move, y ,obj_wall)
    move= 0;

if place_meeting ( x, y + move2 ,obj_wall)
    move2= 0;

如果你需要物体接近碰撞目标,或者一个小循环。