• 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
Aiuto per una aggiunta a un script...
#1
Sto cercando di inserire la seguente funzione: Quando il giocatore preme il tasto:C, il player si abbassa (inginocchia).

Questo è lo script che ho già moddato e postato sul forum e qui è dove devo aggiungere questa funzione:

Codice PHP:
var VelocitaGiocatore 6.0;
var 
AltezzaSalto 8.0;
var 
Gravita 20.0;
var 
RuotareVisuale 3.0;

private var 
moveDirection Vector3.zero;
private var 
grounded boolean false;

function 
FixedUpdate() {
    if (
grounded) {
        
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0Input.GetAxis("Vertical"));
        
moveDirection transform.TransformDirection(moveDirection);
        
moveDirection *= VelocitaGiocatore;
        
        if (
Input.GetButton ("Jump")) {
            
moveDirection.AltezzaSalto;
        }
    }
    
    
transform.Rotate(0Input.GetAxis("Horizontal") * RuotareVisuale0);


    
moveDirection.-= Gravita Time.deltaTime;
    

    var 
controller CharacterController GetComponent(CharacterController);
    var 
flags controller.Move(moveDirection Time.deltaTime);
    
grounded = (flags CollisionFlags.CollidedBelow) != 0;
}

@
script RequireComponent(CharacterController

Help!?
 
Rispondi
#2
penso che si faccia in un modo simile
sparo eh... è la prima volta che vedo script unity e non ce l'ho installato quindi non posso provare. (sono sicuro al 90% che il codice non funziona, però tentar non nuoce)

Codice PHP:
var VelocitaGiocatore 6.0;
var 
AltezzaSalto 8.0;
var 
Gravita 20.0;
var 
RuotareVisuale 3.0;

private var 
moveDirection Vector3.zero;
private var 
grounded boolean false;
private var 
controller CharacterController GetComponent(CharacterController);
function 
FixedUpdate() {
    if (
grounded) {
        
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0Input.GetAxis("Vertical"));
        
moveDirection transform.TransformDirection(moveDirection);
        
moveDirection *= VelocitaGiocatore;
controller.height 2.0;
        
        if (
Input.GetButton ("Jump")) {
            
moveDirection.AltezzaSalto;
        }
if (
Input.GetButton ("C")) {
controller.height 1.0;
}
    }
    
    
transform.Rotate(0Input.GetAxis("Horizontal") * RuotareVisuale0);


    
moveDirection.-= Gravita Time.deltaTime;
    

    
    var 
flags controller.Move(moveDirection Time.deltaTime);
    
grounded = (flags CollisionFlags.CollidedBelow) != 0;
}

@
script RequireComponent(CharacterController

o comunque penso che devi fare qualcosa con controller.height ( http://unity3d.com/support/documentation...eight.html )
 
Rispondi
#3
No, non va cosi... ho provato con la funzione: Scale... però il problema che scala sempre fin quando il giocatore prema il tasto XD non si ferma mai e poi scala scendendo sotto la mappa... un po' alla volta, dipende da quanto si imposta la scala. <.<
 
Rispondi
#4
no non funziona...
 
Rispondi
#5
ma la sfera che dovrebbe rappresentare il personaggio si abbassa (con l'arma e la camera che rimane in alto) oppure non fa proprio niente?
 
Rispondi
#6
L'arma non lo messa... comunque si abbassa la sfera scendendo sempre più giù... non co se hai capito.. accio un esempio:

La sfera sta sulla asse Y a: 100, ora se metto: che ogni volta che si prema C il giocatore si abbassa di 10 sulla Y, si abbassa tutta la sfera scendo sotto la mappa, oppure se metto il "+" sale sopra la mappa...

(Non so se mi sono spiegato bene <.<)
 
Rispondi
#7
e l'effetto che vorresti ottenere qual'è esattamente?
se fosse un personaggio si abbasserebbe (con relativa animazione), su un uovo il massimo che puoi fare mi sa che è cambiare la scala sull'asse y oppure far andare sotto la mappa una parte del corpo (sempre che non si creano problemi sul movimento dovuti alle collisioni)
 
Rispondi
#8
Questo lo so come si fa.... infatti è quello ceh ti ho spiegato ma forse ho spiegato da .... XD. Comunque il movimenti anche se va una parte del corpo sotto la mappa non viene influenzato, però come ho detto ho problemi con limitare il comando a un click alla volta... ora mi è venuto in mente un modo, ci provo.
 
Rispondi
#9
tipo primo_click = abbassa, secondo_click = alza invece che tenere premuto il tasto...
basta mettere un if e un else
Codice PHP:
if(controller.height==1.0//se è basso
{
    
controller.height 2.0 //alza
}
else 
//altrimenti, se è alto
{
    
controller.height 1.0 //abbassa

 
Rispondi
#10
Non è cosi XD, comunque lo sempre saputo come fare solo che quando lo facevo aggiungevo una cosa che non dovevo! XD

Ora ditemi i pulsanti più comandi... per abbasarsi e alzare il palyer..
 
Rispondi
#11
solitamente per abbassarsi si usa control sinistro o alt sinistro (lo stesso tasto per alzarsi e abbassarsi)
 
Rispondi
#12
Ho un bug che non riesco a capire come risolverlo.... praticamente quando il giocatore salta e poi preme su shift (speed extra) il player esce pazzo.... io voglio far si che quando il giocatore faccia questa cosa il comando shif non venga eseguito durante il salto... avete qualche idea? magari anche se non è in javascript ma in c++ o altro postatela che poi la cerco di convertirla <.<.
 
Rispondi
#13
al posto di
if(Input.GetKey ("left shift"))
un
if(Input.GetKey ("left shift") && !Input.GetKey ("Jump")) //ma forse ci sono dei problemi durante la discesa
oppure
if(Input.GetKey ("left shift") && moveDirection.y == altezzaTerreno)
dove per altezzaTerreno intendo il valore corrispondente a moveDirection.y quando il pg non è in salto
 
Rispondi
#14
Già provati questi due modi T_T, il primo si blocca se si premo il tasto jump, e il secondo metodo se si tiene premuto il tasto jump il player continua a salire xD. Ora provo con qualche altro metodo <.<, se altre idee non esitare! XD

[Edit]
Il fatto che il player continuii a salire non è un problema della soluzione ma deriva da altro.. forse se lo risolvo mi risolvo tutti i problemi XD
 
Rispondi
#15
ah... quindi credo che ci sia qualche problema con GetKey (ogre nel buffered input usa keypressed e keyrelased per ovviare il problema)

hai provato cose tipo:
Codice PHP:
if(Input.GetKey ("left shift"))

if(
moveDirection.== altezzaTerreno)
{
moveDirection.AltezzaSalto;
}

 
Rispondi
#16
Steve non ho capito cosa vuoi fare con quel codice... cioè il mio problema è sul Jumo quindi: GetButton("Jump")... e il problema sarà un problema di input... perchè se il giocatore continua a premere il button Jump l'input arriva sempre al gioco e quindi il personaggio si muove sull'asse Y, dovrei bloccare l'input... e farlo "ripartire" solo quando il giocatore tocca il terreno <.<.

[Edit]
Comunque grazie dell'aiuto che mi sta dando..
 
Rispondi
#17
edit

ho fatto un pò di casino confondendo jump con left shift XD

if (Input.GetButton ("Jump") && moveDirection.y==altezzaTerreno)
{
moveDirection.y = AltezzaSalto;
}

così dovrebbe saltare solo se è attaccato al terreno
 
Rispondi
#18
Ah ecco ora ho capito cosa intendevi! XDXD

Comunque ora provo, ma già so che funziona e il codice sarà cosi:

Codice PHP:
if (Input.GetButton ("Jump") && moveDirection.== 0)
         {
        
moveDirection.AltezzaSalto;
         } 

Ragalo pc, ps3 e tutto se non funziona XD!
 
Rispondi
  


Vai al forum:


Browsing: 1 Ospite(i)