Как сделать обработку коллизий объектов?
Как мне обработать столкновение объектов так, что бы при любой скорости объектов, они физически не могли пройти насквозь друг-друга? Просто что бы сталкивались, и останавливались. Пытаюсь сделать игру, на подобии 2Д майнкрафта. Проблем в добавлении верхней коллизии блока что бы игрок не проваливался под карту не было, щяс решил добавить обработку коллизий на другие стороны блока, что бы игрок при прыжке не проходил сквозь блоки, и т.д. Столкнулся с проблемой что теперь обработка коллизий не предсказуемая, просто прислонившись к стене, тебя выбрасывает за край карты. Пытался много что сделать, толком ничего не помогает.
public boolean topCollision (Rectangle p, Rectangle o){
return p.x+p.width>o.x&&p.x<o.x+o.width&&
p.y+p.height>=o.y&&p.y<=o.y+o.height/2;
}
public boolean bottomCollision (Rectangle p, Rectangle o){
return p.x+p.width>o.x&&p.x<o.x+o.width&&
p.y+p.height>=o.y+o.height/2&&p.y<=o.y+o.height;
}
public boolean rightCollision (Rectangle p, Rectangle o){
return p.x+p.width>=o.x+o.width/2&&p.x<=o.x+o.width&&
p.y+p.height>=o.y&&p.y<=o.y+o.height;
}
public boolean leftCollision (Rectangle p, Rectangle o){
return p.x+p.width>=o.x&&p.x<=o.x+o.width/2&&
p.y+p.height>=o.y&&p.y<=o.y+o.height;
}
Так передвигается игрок
if (world.player.rightAction) world.step=5;
else if (world.player.leftAction) world.step=-5;
world.player.x+=world.step;