Il n'est pas vraiment difficile de créer une animation pour déplacer un objet le long d'un chemin. Par exemple, le code suivant animer le long d'une courbe de Bézier spécifique:
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.duration = 1.0f;
pathAnimation.calculationMode = kCAAnimationPaced;
CGPoint currentPosition = viewToAnimate.layer.position;
CGPoint endPoint = CGPointMake(currentPosition.x + 100.0f, currentPosition.y - 50.0f);
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, currentPosition.x, currentPosition.y);
CGPathAddCurveToPoint(curvedPath, NULL, endPoint.x, currentPosition.y, endPoint.x, currentPosition.y, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
[viewToAnimate.layer addAnimation:pathAnimation forKey:@"animateMovementUsingPath"];
La partie centrale de ce code est où la définition du chemin. Dans ce cas, je commence à dessiner à currentPosition
, puis ajouter une courbe qui se termine à endPoint
. Les points de contrôle pour cette courbe sont (endPoint.x, currentPosition.y)
et (endPoint.x, currentPosition.y)
.
Il sera beaucoup plus facile de définir une courbe vectorielle de cette manière et de laisser Core Animation gérer toutes les tweening pour vous que de gérer vous-même toute l'animation.
Je prévois de faire un jeu comme "labyrinthe" ... donc j'aurais besoin de détection de collision et d'autres fonctionnalités. Un moteur de physique serait-il nécessaire? Cela peut-il être réalisé par un codage normal dans l'objectif C? Si c'est difficile, pouvez-vous me proposer un moteur de physique 2D gratuit? – tuttu47
Ressorts Box2D à l'esprit. Je ne l'ai pas utilisé moi-même, mais il est utilisé par ex. Cocos2D, un moteur de jeu bien établi dans le monde iPhone. – Kalle