继续看红色激情的视频教学。今晚看到推箱子的距离判断,这个距离判断带方向性的。
需要预判箱子后面格子的距离是否产生了碰撞。如果没有就可以推了。并且自身和箱子相加一个距离。
每一个格是 32x32像素。
在玩家的step事件里面,添加。
var dir,move,dx,dy,obj_collision;
move = 0;
if(keyboard_check_pressed(ord("A"))){
dir = 180;
move = 1;
}
if(keyboard_check_pressed(ord("W"))){
dir = 90;
move = 1;
}
if(keyboard_check_pressed(ord("S"))){
dir = 270;
move =1;
}
if(keyboard_check_pressed(ord("D"))){
dir = 0;
move = 1;
}
if(move)
{
image_angle = dir;
dx = lengthdir_x(32,dir); //预算一个距离dx
dy = lengthdir_y(32,dir); //预算一个距离dy
//碰撞检测
obj_collision = collision_point(x+dx,y+dy,obj_wall,0,1);
if(obj_collision) exit;
obj_collision = collision_point(x+dx,y+dy,obj_box,0,1);
if(obj_collision)
{
if(position_empty(x+dx*2,y+dy*2))
{
obj_collision.x+=dx;
obj_collision.y+=dy;
x+= dx;
y+= dy;
}
exit; //碰撞了退出
}
x+= dx;
y+= dy;
}