J'essaie de manipuler un objet. Quand il s'approche d'un autre objet, disons un globe, je veux que le globe ait une attraction gravitationnelle sur l'objet original. Je sais que je suis censé utiliser CCBezierTo
, donc ce n'est pas tellement une question de programmation que c'est une question de maths. Mathématiquement, comment pourrais-je comprendre les trois points de la courbe de Bézier (1, 2 et fin) et lui donner un poids en fonction de sa distance (plus loin = moins de traction). J'ai déjà la distance cartographiée dans une variable. Pensez à un vaisseau spatial qui fronde autour de la lune.Cocos2D Courbe de Bézier autour de l'objet comme par gravité
code:
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];
Pourquoi ne pas simplement appliquer un vecteur de force au projectile proportionnel au carré de la distance à l'objet? c'est-à-dire pourquoi ne pas simplement "faire la gravité"? Le chemin sera naturellement courbé, en supposant que le projectile ne se dirige pas directement vers le centre de l'objet. – Robinson
http://oreilly.com/catalog/9780596000066 –