Creare Videogiochi - Game Developer
Aiuto per una aggiunta a un script... - Versione stampabile

+- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi)
+-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia)
+--- Forum: Unity3D Discussioni Generali (https://www.making-videogames.net/giochi/Forum-Unity3D-Discussioni-Generali)
+--- Discussione: Aiuto per una aggiunta a un script... (/thread-Aiuto-per-una-aggiunta-a-un-script)



Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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!?


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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/ScriptReference/CharacterController-height.html )


RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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. <.<


RE: Aiuto per una aggiunta a un script... - Lorenz - 15-08-2010

no non funziona...


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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?


RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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 <.<)


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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)


RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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.


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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




RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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..


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

solitamente per abbassarsi si usa control sinistro o alt sinistro (lo stesso tasto per alzarsi e abbassarsi)


RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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 <.<.


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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


RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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;
}




RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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..


RE: Aiuto per una aggiunta a un script... - steve - 15-08-2010

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


RE: Aiuto per una aggiunta a un script... - Riddick - 15-08-2010

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!