[MY - RS] Mouvement Rotation

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
maliimaloo
Messages : 45
Inscription : 28 Sep 2017 19:06

[MY - RS] Mouvement Rotation

Message par maliimaloo » 28 Sep 2017 19:21

Bonjour,

Je veux faire un personnage qui aura de la graviter sur un cylindre, jusqu’à la pas problème j'ai réussie à tous script correctement mais quand je lance le jeux la rotation de mon personnage change et devient (-21, 0, 0) alors que avant de lancer le jeux il est à (0, 0, 0)

Mon script afin que mon perssonage soie attirer par la graviter du cylindre :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

[RequireComponent (typeof (Rigidbody))]
public class GravityBody : MonoBehaviour {

	public GravityAttractor attractor;
	private Transform myTransform;

	void Start () {
		GetComponent<Rigidbody>().useGravity = false;
		GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
		
		myTransform = transform;
	}

	void FixedUpdate () {
		if (attractor){
			attractor.Attract(myTransform);
		}
	}
	
}


Mon script de la graviter du cylindre :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class GravityAttractor : MonoBehaviour {

	public float gravity = -12;

	public void Attract(Transform body) {
		Vector3 gravityUp = (body.position - transform.position).normalized;
		Vector3 localUp = body.up;

		body.GetComponent<Rigidbody>().AddForce(gravityUp * gravity);

		Quaternion targetRotation = Quaternion.FromToRotation(localUp,gravityUp) * body.rotation;
		body.rotation = Quaternion.Slerp(body.rotation,targetRotation,50f * Time.deltaTime );
	}   

}
image avant lancer le jeux :

http://hpics.li/e7123cd


image après avoir lancer le jeux :

http://hpics.li/393b2f3

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY - RS] Mouvement Rotation

Message par boubouk50 » 29 Sep 2017 09:28

Salut,

Ne serait-ce pas juste l'animation qui le tourne? Si tu ne mets pas de script dessus reste-t-il à 0,0,0
Aussi, l'utilisation du Slerp est un peu bizarre. Ton interpolant devrait être aller de 0 à 1 pour aller d'une rotation à une autre, ici il dépend du framerate, ça n'a pas vraiment de sens. Tu dois ajouter un angle en fonction du temps par rapport à une vitesse de rotation.
Ici, à 30 fps, tu ne fera que prendre la rotation du targetRotation.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

maliimaloo
Messages : 45
Inscription : 28 Sep 2017 19:06

Re: [MY - RS] Mouvement Rotation

Message par maliimaloo » 01 Oct 2017 21:20

Oui exactement c'était sa mon problème, j'avais coder sa en 20 minutes et je chercher chercher, je trouvais pas le problème ^^

et j'avais pas du tous penser à sa ^^, je vous remercie j'ai modifier mon slerp du coup ainsi que j'ai modifier aussi en r'ajoutent un angle en fonction du temps par rapport à la vitesse de rotation ^^

merci beaucoup de votre aide ^^

Répondre

Revenir vers « (C#) CSharp »