【发布时间】:2019-08-08 11:18:51
【问题描述】:
所以最初我设置了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;
}
这是无效的代码。如您所见,这是相同的,但对于 y。我不明白它怎么会有不同的反应。当我下降并与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;
}
【问题讨论】:
标签: game-maker gml game-maker-language game-maker-studio-2