Итак, изначально я установил bbox
и sprite_index
(я знаю, что вы должны использовать маску, но я пока не умею анимации, поэтому пока все упрощаю).
var sprite_bbox_top = sprite_get_bbox_top(sprite_index) - sprite_get_yoffset(sprite_index);
var sprite_bbox_right = sprite_get_bbox_right(sprite_index) - sprite_get_xoffset(sprite_index);
var sprite_bbox_left = sprite_get_bbox_left(sprite_index) - sprite_get_xoffset(sprite_index);
var sprite_bbox_bottom = sprite_get_bbox_bottom(sprite_index) - sprite_get_yoffset(sprite_index);
Итак, ниже код hsp.Это работает просто отлично.
if (place_meeting(x + hsp, y, argument0)) {
while (!place_meeting(x + sign(hsp), y, argument0)) {
x += sign(hsp);
}
_wall = instance_place(x + sign(hsp), y, argument0);
if (hsp > 0) {
x = (_wall.bbox_left - 1) - sprite_bbox_right;
}
else {
x = (_wall.bbox_right + 1) - sprite_bbox_left;
}
hsp = 0;
}
Вот код, который не работает.Как видите, это то же самое, но для вас.Я не понимаю, как это может реагировать по-другому.Когда я спускаюсь и сталкиваюсь с argument0
, объект быстро перемещается вправо (поз. X).Когда я иду вверх и сталкиваюсь, он исчезает совсем.
if (place_meeting(x, y + vsp, argument0)) {
while (!place_meeting(x, y + sign(vsp), argument0)) {
y += sign(vsp);
}
_wall = instance_place(x, y + sign(vsp), argument0);
if (vsp > 0) {
y = (_wall.bbox_bottom - 1) - sprite_bbox_top;
}
else {
y = (_wall.bbox_top + 1) - sprite_bbox_bottom;
}
vsp = 0;
}