Tout d'abord, je tiens à préciser que ce n'est pas un double de cette question: unity 3d rotate the gameobject according to accelerometerobjet par accéléromètre ne Pivotée entrer en collision pas correctement dans l'unité
, j'ai réussi à faire pivoter un objet dans l'unité par en utilisant la boussole de l'accéléromètre &. Cela fonctionne normalement mais, lorsqu'un autre objet entre en collision avec lui, il se clipse à travers l'objet qui entraîne le déplacement aléatoire de l'objet.
Je me suis rendu compte que c'était dû au fait que j'étais directement en modifiant la transformation de l'objet. Je sais que je ne suis pas supposé modifier directement la transformée et que je devrais utiliser le corps rigide à la place, mais, je ne sais pas comment je peux le changer là où il ne modifie pas directement la transformation.
Voici comment je tourne actuellement l'objet:
float norm=0f;
Rigidbody rb;
// Use this for initialization
void Start() {
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update() {
Input.compass.enabled = true;
if (norm == 0) {
norm = Input.compass.trueHeading;
}
float val=Input.compass.trueHeading-norm;
transform.rotation=Quaternion.Euler(new Vector3 ((Input.acceleration.y-1)*90,val ,0));
transform.Rotate (Input.acceleration.x*90*transform.forward);
}
Alors, comment pourrais-je changer cela pour que je ne modifie pas directement la transformation?
Merci à l'avance!
Merci beaucoup! – Paul