2013-06-01 2 views
0

У меня есть спрайт в физическом мире, не зарегистрированный с помощью touchArea, он перемещается только при столкновении с другими спрайтами и регулярно отскакивает на границе физического мира. Теперь я пытаюсь перемещать его случайным образом, когда не сталкивается. Я стараюсь, чтобы придать ему линейную скорость, но она движется по нижнем правом углу и оставаться там без отскакивая назадandengine move sprite заблокирован на углу

if(Sprite.getX() > 0) { 
    bodySprite.setLinearVelocity(new Vector2(VELOCITY_X, VELOCITY_Y)); 
} else if(Sprite.getX() + Sprite.getWidth() > CAMERA_WIDTH) { 
    bodySprite.setLinearVelocity(new Vector2(-VELOCITY_X, -VELOCITY_X)); 
} 

ответ

0

Вы абсолютно уверены, что Sprite.getX() + Sprite.getWidth() > CAMERA_WIDTH это всегда так? (Принимая во внимание вращение и т. Д.)

Я предпочел бы поставить какой-то датчик box2d на края экрана, и когда они начнут касаться, примените импульс.

+0

У меня есть wallFixtureDef (0, 0.5f, 0.5f), примененный к моим краям экрана, и все спрайты хорошо отскакивают от ребер. Я хотел бы держать спрайтов всегда в движении, избегая их остановки. – lucignolo

+0

Я меняю LinearVelocity с: Vector2 shoot = new Vector2 ((originX - fingerX), (originY - fingerY)); body.setLinearVelocity (стрелять); Теперь спрайт перемещается точно в нужное положение, но слишком быстро. Как установить значение скорости? – lucignolo

+1

Умножьте вектор на какое-то значение <1, затем он станет медленнее (короче). –

Смежные вопросы