Rotazione oggetto 3D non si interrompe

di il
9 risposte

Rotazione oggetto 3D non si interrompe

Salve a tutti
Qualcuno sa indicarmi come mai l'oggetto 3D al quale ho assegnato lo script seguente non interrompe la sua rotazione quando raggiunge l'inclinazione indicata ?
Grazie

public float rotationSpeed = 1.0f;
public float maxRotation = 30.0f;

// Update is called once per frame
void Update()
{
// rotate on y axis
transform.Rotate(0, rotationSpeed * Time.deltaTime, 0);

// check if object has rotated more than 30 degrees
if (transform.rotation.y >= maxRotation)
{
// stop rotation
rotationSpeed = 0;
}
}
}

9 Risposte

  • Re: Rotazione oggetto 3D non si interrompe

    Cosa possiamo saperne di quello che fa un metodo Rotate() a noi ignoto?

    Mettiti in debug e vedi che succede a transform.rotation.y a ogni ciclo
  • Re: Rotazione oggetto 3D non si interrompe

    Visto che rotationSpeed è globale, per caso viene resettata da qualche altra parte?
    La posizione nuova viene aggiornata correttamente? Sicuro che quella y sia un angolo rispetto all'asse y e non una coordinata cartesiana?
  • Re: Rotazione oggetto 3D non si interrompe

    Weierstrass
    - il metodo Rotate() innesca la rotazione.... funziona correttamente
    - ho messo in Debug ed effettivamente mi dà dei valori non congrui

    Alexv
    - no non si azzera
    - Si
  • Re: Rotazione oggetto 3D non si interrompe

    Funziona correttamente ma i valori non sono congrui?
    Ma poi che ne sappiamo di cosa fa quel metodo? Magari fa una copia di rotationSpeed * Time.deltaTime, avvia la rotazione e tanti saluti fino a quando deltaTime non si esaurisce...
  • Re: Rotazione oggetto 3D non si interrompe

    Hai provato a visualizzare i due valori che stai confrontando?
  • Re: Rotazione oggetto 3D non si interrompe

    Oregon
    - si ho provato a verificare se fossero espressi in radianti e l'altro in gradi


    Grazie a tutti comunque per l'attenzione
  • Re: Rotazione oggetto 3D non si interrompe

    I valori li aggiorni dopo la rotazione o li ricalcoli a partire dalle coordinate cartesiane nello spazio dell'oggetto? Nel secondo caso hai tenuto conto del codominio dell'arcotangente?
    Puoi postare una piccola sequenza?
  • Re: Rotazione oggetto 3D non si interrompe

    La soluzione è stata quella di chiedergli di fare riferimento agli localEulerAngles

    Debug.Log("y: " + (player.transform.localEulerAngles.y));

    Grazie ancora a tutti
  • Re: Rotazione oggetto 3D non si interrompe

    Per completezza di info lo script funzionante è:


    using UnityEngine;

    public class PlayerMovement : MonoBehaviour
    {
    public Transform player;
    public float rotationSpeed = 1.0f;
    public float maxRotation = 30.0f;

    // Update is called once per frame
    void Update()
    {
    // rotate on y axis
    transform.Rotate(0, rotationSpeed * Time.deltaTime, 0);

    // check if object has rotated more than 30 degrees
    if (player.transform.localEulerAngles.y >= maxRotation)
    {
    // stop rotation
    rotationSpeed = 0;
    }
    }
    }
Devi accedere o registrarti per scrivere nel forum
9 risposte