遇到撞墙问题
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;
如果你需要物体接近碰撞目标,或者一个小循环。
我现在正在开发这款游戏(使用 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;
如果你需要物体接近碰撞目标,或者一个小循环。