Je fais un jeu isométrique sur l'iPhone, et j'ai besoin d'un peu d'aide. Quel est le meilleur moyen de calculer le chemin qu'un objet doit prendre s'il est projeté d'une case à l'autre? J'ai examiné en utilisant NSBezierPaths, mais ne peux pas tout à fait travailler sur comment les utiliser pour le chemin des objets? Toute aide serait grandement appréciée!Comment déplacer calculer un chemin d'objets lancés dans un environnement isométrique?
Répondre
Je vous conseille de ne pas utiliser les graphiques vectoriels (NSBezierPath) pour ce que vous devez accomplir.
Vous pouvez utiliser un CGPoint pour représenter la position de chaque objet de jeu (en supposant qu'il s'agit d'un jeu en 2D). (Placez cette structure dans une classe GameObject).
struct objectPhysics
{
CGPoint position;
CGPoint velocity;
}
Utilisez des vecteurs de vitesse et de direction pour calculer la trajectoire de l'objet. En supposant que les suivants sont des vecteurs:
position = position * velocity * timeDifference;
Lorsqu'un événement se produit (tel que l'utilisateur clique sur un objet ou la détection d'une collision), régler le vecteur vitesse à une valeur (1, 0,5) ou quelque chose qui signifie déplacer + 1 dans la direction X et 0,5 dans la direction Y par image (ou unité de temps si vous avez "* timeDifference").
Vous devriez jeter un oeil à this site pour obtenir des conseils sur le début des programmes de jeu et certains des vector math dont vous aurez besoin afin de calculer la direction que vous devez accélérer dans.
La différence de temps est une mesure de la Beaucoup de temps s'est écoulé depuis que la dernière image est utilisée pour s'assurer que les objets se déplacent à la bonne distance pour rester synchronisés avec votre fréquence d'images.
Allez-vous pour des chemins droits ou courbes? En utilisant la gravité? – jtbandes
Désolé, aurait dû mieux expliquer! Je veux un chemin courbe avec gravité, représentant essentiellement l'action du monde réel de jeter un objet à quelqu'un. –
Je vois cela est marqué comme iPhone. Soyez conscient que NSBezierPath est seulement sur le Mac en ce moment. –