Visualizzazione dei risultati da 1 a 10 su 10

Discussione: gioco auto

  1. #1

    gioco auto

    salve a tutti. non sono ancora molto pratico di falsh ma mi ci sto buttando a capofitto e sto creando dei giochi con delle automobili. Al momento, sbirciando qualche tutorial qua e là, ho scoperto come far "funzionare" le vetture muovendole e facendole girare; infatti per fare ciò creo la mia automobile e gli faccio fare le seguenti azioni:

    onClipEvent (load) {
    maxspeed = 10; //velocita massima
    maxnegspeed = -4; //velocita massima retromarcia

    speed = 0; //velocita corrente

    //funzione che muove la macchina
    function move(angolo) {
    quanto = (_rotation/180)*Math.PI;
    _x += angolo*Math.sin(quanto);
    _y += -angolo*Math.cos(quanto);
    return angolo;
    }
    }
    onClipEvent (enterFrame) {
    //accelera
    if (Key.isDown(Key.UP)) {
    if (speed<maxspeed) {
    speed += 0.4; //l'accelerazione è di 0.4
    }
    } else {
    //rallenta
    if (Key.isDown(Key.DOWN) == false) {
    speed *= 0.98;
    if (speed<0.1 and speed>-0.1) {
    speed = 0;
    }
    }
    }
    //frena, retromarcia
    if (Key.isDown(Key.DOWN)) {
    if (speed>maxnegspeed) {
    speed -= 0.4;
    }
    }
    //sterza a sinistra
    if (Key.isDown(Key.LEFT)) {
    _rotation -= speed/1; //era /2
    }
    //sterza a destra
    if (Key.isDown(Key.RIGHT)) {
    _rotation += speed/1; //era /2
    }

    //muove la macchina
    move(speed);
    //velocita corrente
    _root.speed = Math.round(speed);
    }


    così facendo però posso creare delle piste grandi quanto la mia scena.. quello che vorrei fare invece è di avere un percorso molto più grande e visualizzare solamente un pezzo di pista alla volta e man mano che si percorre la strada la scena inquadra il pezzo di pista interessato.. insomma, per farla breve un gioco di questo genere .

    penso che per fare ciò si deve fare qualcosa del tipo "background scrolling" ma non ne sono molto al corrente.. sapreste aiutarmi?

    ciao ciao!

  2. #2
    Utente di HTML.it L'avatar di §elva
    Registrato dal
    Nov 2006
    Messaggi
    607
    per far ciò devi agire sulle proprietà x e y del clip filmato che contiene la pista, che io ho istanziato con il nome "level"..

    prova così:

    Codice PHP:
    onClipEvent (load) {
        
    maxspeed 10;
        
    //velocita massima
        
    maxnegspeed = -4;
        
    //velocita massima retromarcia
        
    speed 0;
        
    //velocita corrente
        //funzione che muove la macchina
        
    function move(angolo) {
            
    quanto = (_rotation/180)*Math.PI;
            
    _root.level._x  += -angolo*Math.sin(quanto);
            
    _root.level._y += angolo*Math.cos(quanto);
            return 
    angolo;
        }
    }
    onClipEvent (enterFrame) {
        
    //accelera
        
    if (Key.isDown(Key.UP)) {
            if (
    speed<maxspeed) {
                
    speed += 0.4;
                
    //l'accelerazione è di 0.4
            
    }
        } else {
            
    //rallenta
            
    if (Key.isDown(Key.DOWN) == false) {
                
    speed *= 0.98;
                if (
    speed<0.1 and speed>-0.1) {
                    
    speed 0;
                }
            }
        }
        
    //frena, retromarcia
        
    if (Key.isDown(Key.DOWN)) {
            if (
    speed>maxnegspeed) {
                
    speed -= 0.4;
            }
        }
        
    //sterza a sinistra 
        
    if (Key.isDown(Key.LEFT)) {
            
    _rotation -= speed/1;
            
    //era /2
        
    }
        
    //sterza a destra 
        
    if (Key.isDown(Key.RIGHT)) {
            
    _rotation += speed/1;
            
    //era /2
        
    }
        
    //muove la macchina 
        
    move(speed);
        
    //velocita corrente
        
    _root.speed Math.round(speed);

    da sempre l'ignoranza fa paura, ma il silenzio è uguale a morte

  3. #3
    ma così facendo la macchina mi rimane sempre nel centro e non segue la pista.. invece nel gioco che ho riportato nel link sopra la pista non gira, ma è la macchina che pur rimanendo nel centro della scena gira e percorre tutto il circuito che resta fisso.

    è come se una telecamera filmasse dall'alto il percorso della macchina per tutto il tracciato..

    non so come fare..

    help!!

  4. #4
    Utente di HTML.it L'avatar di §elva
    Registrato dal
    Nov 2006
    Messaggi
    607
    ma nemmeno nel mio codice il circuito gira!
    si fa ruotare l'automobile, spostando il circuito..

    http://img504.imageshack.us/my.php?i...arforumto2.swf

    a me il principio di movimento riportato nel tuo link sembra uguale a quello da me riportato..

    ah.. non fare caso alla grafica
    da sempre l'ignoranza fa paura, ma il silenzio è uguale a morte

  5. #5
    hai ragione! che idiota!!! avevo applicato le azioni al circuito e non alla macchina!

    ti ringrazio! mi sei stato di enrome aiuto!!!

    ciaooo!

  6. #6
    rieccomi con altri problemi!!!

    ora ho completato quasi tutto il circuito ma ci sono ancora due problemi che non riesco a risolvere:

    1) questo sarà una cavolata immagino per dei professionisti come voi
    nel primo frame voglio mettere una casella input text dove inserire il nome del giocatore e se questa casella risultasse vuota deve apparire un messaggio in un campo di testo dinamico che dice "devi inserire un nome" e quindi non si puo' passare al frame successivo.
    Io ho provato di tutto ma non ce l'ho fatta.. riesco a controllare se nel campo di testo c'è una tale parola ma non se nel campo non c'è scritto nulla..

    2) il secondo problema lo vedo un po' piu' complicato.. nella scena principale ho il movie clip della macchina (istanza: 'car'); mentre i due checkpoint (il primo si chiama 'checkpoint1' e rappresenta il punto di partenza/arrivo; il secondo 'checkpoint2' rappresenta il punto intermezzo che si deve oltrepassare per completare il giro) si trovano all'interno del movie clip 'ground' (che sarebbe il circuito). Come faccio a controllare se la macchina passa per i due checkpoint? qual'è il codice che dovrei usare? e dove?

    spero di essere stato chiaro..

    grazie mille per il vostro aiuto!!
    duke

  7. #7
    Utente di HTML.it L'avatar di §elva
    Registrato dal
    Nov 2006
    Messaggi
    607
    allora per il primo punto..
    *nella timeline principale crei un nuovo keyframe..
    *ci inserisci un testo di input, e nelle sue proprietà vai dove c è scritto "var" e gli assegni un nome alla variabile (io ho usato "nome");
    *inserisci un pulsante e lo istanzi (io ho usato il nome istanza "entra")
    *inserisci un campo di testo dinamico, gli dai nome di variabile "testo_errore", magari gli togli il bordo e non lo rendi selezionabile..
    na roba del genere: http://img267.imageshack.us/my.php?i....swf&width=480
    *inserisci queste azioni:

    Codice PHP:
    stop();
    _root.nome "";
    _root.entra.onRelease = function() {
        if (
    nome == "") {
            
    testo_errore "inserisci un nome";
        } else {
               
    //cambia frame
               //_root.gotoAndStop(2);
            
    }
    }; 
    ora vedo anche per il secondo punto
    da sempre l'ignoranza fa paura, ma il silenzio è uguale a morte

  8. #8
    Utente di HTML.it L'avatar di §elva
    Registrato dal
    Nov 2006
    Messaggi
    607
    per il secondo punto potresti usare il metodo hitTest(); per controllare se l'auto tocca i checkpoint..

    una cosa del genere:
    Codice PHP:
    _root.car.onEnterFrame=function(){
    if(
    _root.car.hitTest(_root.ground.checkpoint1){
    trace("checkpoint1");
    }
    if(
    _root.car.hitTest(_root.ground.checkpoint2){
    trace("checkpoint2");
    }

    oppure potresti verificarlo attraverso le proprietà x e y credo..
    ho steso tutto di fretta.. spero funzi

    da sempre l'ignoranza fa paura, ma il silenzio è uguale a morte

  9. #9
    grazie mille! sei veramente un genio!

    per il secondo punto c'ero arrivato da solo alla fine dopo vari tentativi!

    Ora mi rimane un unico problema irrisolto.. per il resto sono riuscito a creare tutto il gioco!

    infatti ho creato un piccolo movie_clip (istanza: 'bestlap') contenente la scritta "BEST LAP" che lampeggia per 2 secondi..

    qual'è l'azione che mi permette di "avviare" il movie_clip 'bestlap' quando il giocatore fa il miglior giro?

    in poche parole vorrei che quando un giocatore fa il miglior giro, per due secondi in un punto della scena lampeggiasse la scritta "best lap"..

    grazie mille!
    sei veramente un GRANDE!!!
    duke

  10. #10
    Utente di HTML.it L'avatar di §elva
    Registrato dal
    Nov 2006
    Messaggi
    607
    metti il movie clip nel punto in cui vuoi che compaia nello stage..
    nel primo frame dell animazione ci metti uno stop();
    e nell'ultimo frame metti:
    Codice PHP:
    this._visible=false
    per renderlo invisibile una volta finita l'animazione..

    nella timeline principale metti:
    Codice PHP:
    _root.bestlap._visible=false
    per renderlo invisibile all'inizio...
    dopo di che devi eseguire un controllo ad ogni giro per verificare se l ultimo tempo è il tempo migliore..

    puoi farlo utilizzando una variabile che memorizza il tempo migliore, ed un altra variabile di supporto per verificare se l'ultimo tempo è il migliore..

    esempio:
    Codice PHP:
    tempoGiro=0;
    bestTime=0
    quando poi registri il tempo ad ogni giro lo assegni alla variabile tempoGiro e poi esegui un controllo del genere:
    Codice PHP:
    if(bestTime==0){                 //per il primo giro..
    bestTime=tempoGiro;
    _root.bestlap._visible=true;   //rende l animazione visibile
    _root.bestlap.play();            //fa partire l animazione
    }
    if(
    tempoGiro<bestTime){      //controllo ad ogni giro
    bestTime=tempoGiro;       
    _root.bestlap._visible=true//rende l animazione visibile
    _root.bestlap.play();          //fa partire l animazione

    una cosa del genere dovrebbe funzionare

    da sempre l'ignoranza fa paura, ma il silenzio è uguale a morte

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.