2016-08-17 6 views
0

У меня есть игровой мир, в котором игрок вращается вокруг точки (например, планеты). Как я могу вращать тело вокруг центральной точки? Я также хочу как-то использовать что-то вроде интерполяции классов актеров для перемещения вещей, возможно ли это? Благодаря!Вращайте тела вокруг центральной точки

ответ

2

Вы можете вращаться через vector2 easly.

Vector2 vectorbody = new Vector2(50f, 50f); 
Vector2 vectorcenter = new Vector2(100f,100f); 
Vector2 vectordis= vectorbody.cpy().sub(vectorcenter);//Displacement vector center to body 
vectordis.setAngle(vectordis.angle() + rotatespeed);//Rotate speed can be negative that means it will rotates to other side. 
vectordis.add(vectorcenter); //vectordis now became rotated vectorbody 
vectorbody.set(vectordis); //vectorbody updated 

Вы также можете использовать актер-методы.

Просто определите новую переменную, как is_in_orbit, и если ее истинная (на орбите), то поверните ее в другое место с помощью методов интерполяции классов акторов.

Кстати, у вас также есть мнение, чтобы использовать физику, поскольку закон всемирного тяготения Ньютона также является физикой, но он будет сложным и может вызвать неожиданные результаты в случае появления большего количества точек центра (планеты, как вы сказали).

+0

Я знаю, что могу использовать класс актера, но я хотел также использовать box2d в качестве столкновения. Я все еще запутался в чем-то, но как я могу повернуть тело? Я вижу, что вы используете векторы, чтобы получить угол, как мне настроить тело на этот угол? – Wyatt

+0

Фактически я получил позицию. vectorbody.x и vectorbody.y - это новые координаты тела. Вы можете установить положение тела с bodyDef.position.set (vectorbody.x, vectorbody.y); –

+0

Я догадываюсь, что вас не поняли. я говорил о положении, когда тело вращается вокруг центра, а не вращение тела. Вы можете исследовать body.setTransform (body.getPosition(), угол); –

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