Je travaille sur une arme de type couteau de lancer où un joueur vise librement puis jette un couteau. Le couteau tourne dans les airs et, lors d'une collision, il s'arrête de tourner et se dirige vers l'objet avec lequel il est entré en collision. La rotation est gérée via une animation tandis que la trajectoire du couteau est gérée par la physique.
Un problème auquel je suis confronté est de savoir comment s'assurer que lorsque le couteau entre en collision avec un ennemi, le couteau sera face à lui. Pour le moment, ce qui se passe parfois, c'est que le couteau s'enfonce d'abord dans la poignée ennemie. Ce qui est évidemment irréaliste. Dans le même temps, je pense qu'il serait tout à fait déraisonnable que le couteau ne "frappe" l'ennemi que s'il a heurté la lame en premier, car la vitesse à laquelle le couteau tourne est hors du contrôle du joueur.
J'ai regardé beaucoup de séquences de killcam lentes d'armes similaires et chaque fois que l'arme est lancée, elle tourne dans les airs et se retrouve toujours comme par magie avec la lame pointée sur sa cible. Pour un jeu où la distance de lancer sera constante, c'est assez simple à faire. Mais je ne sais pas trop comment prédire cela, car de nombreux facteurs imprévisibles sont impliqués, par exemple. direction du couteau, rotation du couteau, position de l'ennemi, distance de l'ennemi, etc. Si possible, je préférerais ne pas avoir à utiliser une logique de prédiction complexe car le jeu sera pour des appareils assez bas de gamme. Existe-t-il un moyen de «résoudre la fumée et les miroirs»?
Exemple: https://youtu.be/0fav8lFpBko?t=42s