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);
                }                   
            }               
        }
    }

0 ответов

Другие вопросы по тегам