Je commence à créer un jeu 2D et j'ai une certaine confusion quant à savoir si je devrais effectuer une rotation dans la fonction de mise à jour ou de rendu.Effectuer la rotation des vertices 2D dans la fonction de mise à jour ou la fonction de rendu
Le problème est le suivant: J'ai un triangle composé de trois sommets. Le triangle a une valeur de rotation en degrés.
Si je fais pivoter les sommets dans la fonction de mise à jour, le triangle tourne à l'infini car chaque mise à jour applique la rotation encore et encore.
Par conséquent, j'ai décidé de ne pas faire pivoter les sommets dans la fonction de mise à jour et d'effectuer plutôt la rotation, basée sur les sommets d'origine, dans la fonction de rendu.
Cela fonctionne, mais maintenant j'ai un problème différent. Les sommets ne sont pas réellement là où ils semblent être. Je ne peux donc pas utiliser les vertices pour effectuer une détection de collision, etc.
La seule idée que j'ai pour résoudre ceci est que je pourrais effectuer la rotation dans la fonction de mise à jour mais avoir deux ensembles de sommets; un pour les sommets d'origine, un des sommets tournés. Ensuite, utilisez les sommets pivotés dans les calculs de détection de collision - cela sent hacky et inefficace bien!
J'ai assemblé un codepen démontrant l'application de la rotation dans la fonction de rendu; https://codepen.io/anon/pen/pPRjLq
Use arrow keys to rotate
Alors, dois-je tourner en rendre ou mettre à jour? Si rendu alors comment maintenir les sommets à jour? Si mise à jour alors comment puis-je empêcher les rotations infinies?
Toute aide de personnes expérimentées serait grandement appréciée - merci!