Salut ! Moi aussi j'ai du mal avec le LookAt(), donc j'ai fait mon propre truc ^^
D'abord, tu crée un acteur avec un sprite (n'importe lequel, mais assez grand, voire même plus grand que ce que l'on voit in-game), puis tu le met à x=0, y=0 et à la hauteur voulue (donc celle du perso), et tu change l'opacité du sprite à 0, (sinon le sprite va tout recouvrir ^^)
Tu ajoute ça dans le update de l'acteur qui sert de joueur:
let ray: any // Tu crée un rayon
ray = new Sup.Math.Ray().setFromCamera(Sup.getActor("Camera").camera, Sup.Input.getMousePosition()).intersectActor(Sup.getActor(/*Nom de ton acteur qui contient le sprite que tu as crée*/))[0] //Ici on lance le rayon depuis la caméra jusqu'au sprite, pour plus tard récupérer la position de la souris
let point = null
if (ray != undefined) {
point = this.actor.getPosition().subtract(ray.point) //Pour éviter d'avoir un décalage quand le joueur bouge
this.actor.setLocalEulerZ( Math.atan2( point.y, point.x )) //On calcule l'angle que doit avoir le joueur selon la position de la souris
}
Et voilà, normalement c'est sensé marcher ! J'ai pas testé dans plusieurs situations, donc ça marchera peut-être pas pour toi, alors dis-moi-le si tu as un problème, que je regarde ^^
(Si tu as un décalage, c'est que le sprite est mal tourné, alors sur la ligne:
this.actor.setLocalEulerZ( Math.atan2( point.y, point.x ) - Math.PI/2)
Pour moi c'est - Math.PI/2 (ce qui revient à tourner de 90° vers la gauche) mais si tu veux tourner de 45° vers la droite, alors met this.actor.setLocalEulerZ( Math.atan2( point.y, point.x ) + Math.PI/4) à la place)