Cocos2D Bezier изогнута вокруг объекта, как будто под действием силы тяжести

Я пытаюсь манипулировать объектом. Когда он приближается к другому объекту, скажем, к глобусу, я хочу, чтобы земной шар оказывал гравитационное притяжение на исходный объект. Я знаю, что должен использовать CCBezierTo , так что это не столько вопрос программирования, сколько математический.

Математически, как я могу вычислить три точки кривой Безье (1, 2 и конец) и присвоить ему вес в зависимости от расстояния (дальше = меньше тяги). У меня уже есть расстояние, нанесенное на карту в переменной.

Подумайте о космическом корабле, летящем вокруг Луны.

Код:

ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(projectile.position.x + 10, projectile.position.y + 20);
bezier.controlPoint_2 = ccp(projectile.position.x + 20, projectile.position.y + 40);
bezier.endPosition = ccp(projectile.position.x + 30, projectile.position.y+60);
id bezierAction = [CCBezierTo actionWithDuration:1 bezier:bezier];
[projectile stopAllActions];
[projectile runAction: bezierAction];
10
задан LearnCocos2D 13 November 2011 в 01:08
поделиться