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 );
}
}
http://hpics.li/e7123cd
image après avoir lancer le jeux :
http://hpics.li/393b2f3