• 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
Controllo Player che non funziona benissimo...
#1
Ciao a tutti,

mi sono iscritto la scorsa settimana su questo Forum perché affascinato da Unity 3D.

Ho iniziato con i videotutorial di Marf, che ringrazio, mi sono spulciato i passi della Doc ufficiale sul sito Unity e fatto il giro di tutti i vermi su Youtube :-)

Dopo di ché ho pensato di partire dalle cose semplici: ho preso un modello 3D con un bel po' di animazioni e l'ho messo nella scena, insieme ad un terrain, una Camera e ad una Directional light.

Ho creato uno script per la camera, che mi seguisse il Player sempre in 3a persona (funziona) e poi sono passato ai controlli del personaggio... ma ho un problema.

Questo il codice:

______________________

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {
public float movementSpeed = 1;
public float turningSpeed = 60;

void Update() {


// CON LE FRECCE "destra" E "sinistra" GIRA A DX O SX
if (Input.GetAxis("Horizontal") != 0)
{
animation.CrossFade("walking");
float horizontal = Input.GetAxis("Horizontal") * turningSpeed * Time.deltaTime * 5;
transform.Rotate(0, horizontal, 0);
}
else
{
animation.CrossFade("standing");
}


// SE SI PREME LA FRECCIA "sù" CAMMINA
if (Input.GetKey("up"))
{
animation.CrossFade("walking");
float vertical = Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime / 3;
transform.Translate(0, 0, vertical);
}
else
{
animation.CrossFade ("standing");
}


// SE SI PREME LA FRECCIA "giù" SI METTE A CORRERE
if (Input.GetKey("down"))
{
animation.CrossFade("running");
float vertical = Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime / 3;
transform.Translate(0, 0, vertical);
}
else
{
animation.CrossFade ("standing");
}


// SE SI PREME LO "spazio" SALTA
if (Input.GetKey("space"))
{
animation.CrossFade("jumping");
float vertical = Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime / 3;
transform.Translate(0, 0, vertical);
}
else
{
animation.CrossFade ("standing");
}

}
}
_______________________

Pensavo che controllasse, ad ogni frame, tutte le IF... ma, sorpresa, mi fa sempre e soltanto l'ultima IF (in questo caso, il Jumping). Gli altri tasti, per dirlo in francese aulico, non li caca per niente. :-)

Dove sbaglio?

Grazie.

P.S: in realtà, della prima IF, applica la rotazione, ma senza animazione... mentre se lascio solo lei, come IF, togliendo tutte le altre, funziona a meraviglia. Huh

Vabbè... scusate, ho risolto con una intuizione dell'ultimo secondo: ELSE IF, se può servire agli altri.

:-)

Alla prossima.
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Problema con controllo per vedere se il tocco è nel collider davidecreatoreapp 4 928 17-07-2015, 04:18 PM
Ultimo messaggio: davidecreatoreapp
  Problema script vita player davidecreatoreapp 4 618 06-04-2015, 05:17 PM
Ultimo messaggio: Chip
  Menù di cambio del player Master Gabriel 4 669 25-02-2015, 08:57 AM
Ultimo messaggio: Master Gabriel
  controllo su android (unity3d) nonsoil2 3 634 23-01-2015, 04:40 PM
Ultimo messaggio: Zettamax
  UNITY 3D. far galleggiare il player? leirbag99 4 1,146 29-07-2013, 09:33 AM
Ultimo messaggio: xGiovi9810x
  come funziona la telecamera? cross112 1 455 26-03-2013, 08:32 AM
Ultimo messaggio: BlaClex46

Vai al forum:


Browsing: 1 Ospite(i)