Mon probleme se rapproche d'un sujet pas tres vieux mais comme il est résolu j'ai préferé creer un nouveau topic
je souhaiterais faire courir un personnage autour d'un axe défini en gardant toujours la même distance entre les deux.
J'ai testé différentes solutions mais chacune avait des défauts rédhibitoires
si je gère mon perso avec un characterController le fait de mettre une force pour le deplacer va le faire sortir de l'orbite que je souhaite garder
si je gere plus simplement avec un transform.translate le character a pas d'inertie donc des que je saute c'est soit que a la vertical soit jai un "controle" totale de la direction pendant le saut
je vous mets le code que jutilise actuellement mais qui marche pas terrible
Code : Tout sélectionner
void Start()
{
//Fetch the Rigidbody from the GameObject with this script attached
m_Rigidbody = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetButton("Jump") && auSol)
{
//Apply a force to this Rigidbody in direction of this GameObjects up axis
m_Rigidbody.AddForce(transform.up * m_Thrust, ForceMode.Impulse);
Debug.Log("jump");
}
#region rotation autour du point centrale
// calcul orientation vers le centre
Vector3 dir = centerTarget.transform.position - this.transform.position;
Quaternion look = Quaternion.LookRotation(dir);
Vector3 rotation = look.eulerAngles;
this.transform.rotation = Quaternion.Euler(0f, rotation.y, 0f);
#endregion
if(Input.GetAxis("Horizontal") != 0 && auSol)
{
transform.Translate(Vector3.right * Time.deltaTime * m_Thrust, Camera.main.transform);
}
transform.position = (transform.position - centerTarget.transform.position).normalized * distance + centerTarget.transform.position; // sert a se maintenir a *distance du centre
}