libgdx - столкновение прямоугольника, изменение скорости
Я собираю небольшую 2-мерную стратегию в реальном времени ( RTS) с прямоугольными хитбоксами.
Таким образом, я могу определять положение моего объекта, целевое положение моего объекта и определять будущие положения, которые будут перекрываться.
Но как я могу рассчитать меньшую скорость (скорость * (дельта - X), чтобы сидеть прямо рядом с "Черт возьми"?
private Vector2 position;
private Vector2 positionMoveTarget;
private float width;
private float height;
private Rectangle DamnBlock; /* Hit detection test */
/* CODE CODE CODE */
if(this.getPositionMoveTarget() != null ){
if(this.getPosition() == this.getPositionMoveTarget()){
this.setPositionMoveTarget(null);
} else {
Vector2 tmpPosition = new Vector2(this.getPosition());
Vector2 tmpPositionMoveTarget = new Vector2(this.getPositionMoveTarget());
Vector2 velocity = new Vector2(tmpPositionMoveTarget).sub(tmpPosition).nor().scl(this.getMoveSpeed()*delta);
Vector2 tmpPositionWithVelocety = new Vector2(tmpPosition).add(velocity);
if(new Rectangle(tmpPositionWithVelocety.x, tmpPositionWithVelocety.y,this.getWidth(),this.getHeight()).overlaps(DamnBlock)){
/*
Calculate the biggest possible "velocety * ( delta - X )", in order to sit directly next to DamnBlock.
But how ?
*/
} else {
if(tmpPosition.dst2(tmpPositionMoveTarget)<tmpPosition.dst2(tmpPositionWithVelocety)){
this.setPosition(this.getPositionMoveTarget());
this.setPositionMoveTarget(null);
} else {
this.setPosition(tmpPositionWithVelocety);
}
}
}
}