je fais encore appel a votre aide car je me casse les dents sur deux actions a réaliser mais je ne sais pas comment m'y prendre.
dans mon petit jeux, j'instancie un vaisseau qui part d'une planète A et qui se translate vers une planète B pour l'attaquer et la conquérir.
mon premier prb est le suivant . selon la position orbital de mes deux planètes A et B, il se peut que celles ci soit alignées avec l'étoile centrale (le soleil) et comme mon ou mes vaisseaux font une ligne droite entre les deux planètes il arrive que la trajectoire traverse le soleil ce qui n'est pas très réaliste puisque le vaisseau passe à travers la sphère "soleil".
Comment feriez vous pour lui indiquer qui si il est a une certaine distance du soleil il doit faire une rotation autour puis reprendre la trajectoire initiale ?
Code : Tout sélectionner
// Update is called once per frame
void Update()
{
transform.LookAt(target.transform); // axe Z du Spacecraft en direction de la target
trajectoire = target.transform.position - transform.position; // calcul de la trajectoire
if (distanceToPlanet0 <= 6.0f)
{
gameObject.transform.RotateAround(planet0.transform.position, new Vector3(x_vector, y_vector, z_vector), 15 * Time.deltaTime);
}
else
{
transform.Translate(trajectoire.normalized * speed * Time.deltaTime, Space.World); // deplacement vers la target
}
et second point c'est que bien entendu comme il y a un lookat dans la direction de la target lorsqu'il commence sa rotation autour du soleil, le nez du vaisseau ne pointe plus dans la direction dans laquelle il avance (mais tjrs en direction de la target) et il fait donc un déplacement en crabe ce qui n'est pas très réaliste non plus . comment puis je faire pour que l'axe z du vaisseau soit dans le sens de son déplacement lors de cette rotation orbitale temporaire ?)
auriez vous un ou des suggestion à me faire pour m'aidez ?