J'écris un jeu en utilisant la bibliothèque Cocos2d pour iOS. Jusqu'à présent, j'ai un sprite sur l'écran que je voudrais faire glisser. Fondamentalement, j'ai un CGPoint appelé End. Quand je traîne sur l'écran, il bouge. Je veux que le sprite détermine sur chaque image si End a bougé, et s'il a commencé à avancer vers lui à une vélocité donnée, et qu'il s'arrête juste au-dessus. La fin est comme une ancre. J'ai accompli les deux premières étapes en traçant le vecteur comme ceci:Comment détecter si un CCSprite a atteint un certain point?
-(void) update:(ccTime)deltaTime
{
CGPoint Pos = _player.position;
velocity = 15;
diff.x = End.x - _player.position.x;
diff.y = End.y - _player.position.y;
length = ccpLength(diff);
norm.x = diff.x/length * velocity;
norm.y = diff.y/length * velocity;
Pos.x += norm.x;
Pos.y += norm.y;
}
je déplace le point final autour comme ceci:
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
oldTouchLocation = [[CCDirector sharedDirector sharedDirector] convertToGL:oldTouchLocation];
oldTouchLocation = [self convertToNodespace:oldTouchLocation];
CGPoint diff = ccpSub(touchLocation, oldTouchLocation);
End = ccpAdd(End, diff);
}
Quelle est la meilleure façon de détecter quand le _player a atteint c'est la destination? J'ai essayé cela de plusieurs façons, mais je ne peux vraiment pas être assez précis. J'ai essayé d'ajouter une minuterie qui chronomètre la durée de chaque mouvement, donc je pourrais tester si vitesse * durée> = longueur. Est-ce le moyen de le faire? Ça n'a pas très bien fonctionné. Les programmeurs principaux veulent me donner quelques conseils?