• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Script rotazione
#1
Ciao a tutti Blush
Ho creato uno script che permette ad un'oggetto di fare una metà rotazione a destra e sinistra con la premura di un tasto che imprime la forza, e se si rilascia il tasto, l'oggetto ritorna pian piano alla posizione originale grazie alla forza di gravita'.
Bene, in questo codice c'è solo un tasto che imprime la forza per entrambe le direzioni (destra e sinistra), vorrei mettere un'altro tasto che dà la forza alla rotazione nel senso contrario.
Riassumo in 2 righe come dovrebbe essere:
Tasto1 = forza rotazione sinistra
Tasto2 = forza rotazione destra

Come posso fare? non ho idea Sad
Ecco lo script:

Codice:
using UnityEngine;
using System.Collections;

public class RideSchiffschaukel : MonoBehaviour {
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//
//                                        
//
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------

    GameObject gondelarm;
    float gondelarm_sin;

//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
void Awake()
{
    gondelarm = transform.Find("plattform/staender/gondel_arm").gameObject;
    gondelarm_sin = 0.0f;
}
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
void Start()
{

}
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
void Update()
{
    //-- arm rotation
    float arm_rot = Mathf.Sin(gondelarm_sin) * 80.0f;
    gondelarm_sin = (gondelarm_sin + Time.deltaTime * 1.0f) % 360.0f;

    gondelarm.transform.localEulerAngles = new Vector3(0.0f, 0.0f, arm_rot);
    
}
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
}

Grazie a tutti.. Shy
 
Rispondi
#2
qualcuno puo aiutarmi? o.o
 
Rispondi
#3
Allora...ti consiglio di leggerti un pò di documentazione su Input.

Per rilevare degli input usa:

Codice PHP:
Input.GetKeyDown(KeyCode.tastodellatastiera

Per il keycode da collegare usa questo reference:
http://docs.unity3d.com/Documentation/Sc...yCode.html

Perciò...un esempio di codice potrebbe essere:
Codice PHP:
using UnityEngine;
using System.Collections;

public class 
RideSchiffschaukel MonoBehaviour
{
    
GameObject gondelarm;
    
float gondelarm_sin;

void Awake()
{
    
gondelarm transform.Find("plattform/staender/gondel_arm").gameObject;
    
gondelarm_sin 0.0f;
}

void Start()
{

}

//Update viene chiamata ad ogni istante
void LateUpdate()
{
    
//-- Left arm rotation
    
if(Input.GetKeyDown(KeyCode.LeftArrow))
    {
    
float arm_rot Mathf.Sin(gondelarm_sin) * 80.0f;
    
gondelarm_sin = (gondelarm_sin Time.deltaTime 1.0f) % 360.0f;

    
gondelarm.transform.localEulerAngles = new Vector3(0.0f0.0farm_rot);
    }

    
//--Right arm rotation
     
if(Input.GetKeyDown(KeyCode.RightArrow))
    {
    
float arm_rot = - Mathf.Sin(gondelarm_sin) * 80.0f;
    
gondelarm_sin = (gondelarm_sin Time.deltaTime 1.0f) % 360.0f;

    
gondelarm.transform.localEulerAngles = new Vector3(0.0f0.0farm_rot);
    }    
}

 
Rispondi
#4
Si una delle poche cosa che conosco sono gli Input, infatti avevo provato ma non ruota, va a scatti, mentre senza gli input ruota..
Poi dovrei aggiungere la forza di gravita alla rotazione, così se rilascio i tasti ritorna pian piano alla posizione originale.. come posso fare per la forza di gravità?
 
Rispondi
#5
Il modo più rozzo che mi viene in mente è considerare i casi tasto a e tasto b nel sotto caso "bottone rilasciato": esegui una rotazione inversa.
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  problema rotazione torretta giggimito 9 726 28-08-2015, 05:29 PM
Ultimo messaggio: giggimito
  script rotazione sprite giggimito 8 1,006 23-12-2014, 01:38 AM
Ultimo messaggio: Blackg96

Vai al forum:


Browsing: 1 Ospite(i)