Бурундук 2D Настройка функции скорости кровотока - PullRequest
0 голосов
/ 03 июня 2011

Итак, я использовал демонстрацию Planet.c, чтобы настроить функцию скорости для моей 2D игры для iPhone, которая находится в работах, связанных с вращением планет. Однако следующий код устанавливает хорошие орбиты, но делает это только вокруг источника экрана, то есть в нижнем левом углу экрана:

// Point mass position
cpVect p = body->p;

cpFloat sqdist = cpvlengthsq(p);
cpVect g = cpvmult(p, -gravityStrength / (sqdist * cpfsqrt(sqdist)));

cpBodyUpdateVelocity(body, g, damping, dt);

Я попытался просто добавить вектор смещения положения центральной звезды (в данном случае центр экрана cpv (160, 240)), но это просто отсылает его по странной орбите. Я всегда пробовал различные попытки получить вектор положения моего тела и радиальный вектор относительно центра в отличие от начала координат, но я не могу заставить его работать совершенно правильно. Я думаю о чем-то вроде:

// Sun position
cpVect disp = cpv(160, 240);

// Point mass position
cpVect p = body->p;

// Point mass relative to Sun
p = cpvsub(disp, p);

cpFloat sqdist = cpvlengthsq(p);
cpVect g = cpvmult(p, -gravityStrength / (sqdist * cpfsqrt(sqdist)));

cpBodyUpdateVelocity(body, g, damping, dt);

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 04 июня 2011

Понял!Как я и подозревал, нужно было просто получить правильные векторные вычитания, а именно центр минус вектор положения.Молодец!

...