[WIP] Puzzle game flusso

Stai vedendo 9 articoli - dal 26 a 34 (di 34 totali)
  • Autore
    Articoli
  • #192312

    Qwerty
    Partecipante
    • Veterano
    • ★★
    • Post sul Forum 456

    Per “spedire matrici da uno script all'altro” intendi passare dei dati (magari un po' più complessi di una semplice variabile) da uno script all'altro?

    In questo caso puoi usare le Global Dict.

    Comunque puoi impedire al giocatore di spostare le tessere una volta che è partito il flusso…

    #192313

    Satherial
    Partecipante
    • Blenderista
    • Post sul Forum 41

    Per impedire al giocatore di spostare le tessere basterebbe credo mettere delle property settate come si deve immagino.

    Hai ragione, il Globar Dict(ionary?) !

    Ho trovato un esempio su come funziona ed è proprio quello che mi serviva:

    http://www.tutorialsforblender3d.com/GameModule/GameLogicModule_20.html

    Grazie mille!

    Questo mi servirà  per capire la disposizione delle tessere. Per la rotazione invece penso la si debba calcolare quando il flusso

    arriva alle porte della tessera successiva…Ho però notato che è veramente molto complicato capire come individuare un oggetto

    creato durante l'esecuzione del game engine perché hanno tutti lo stesso nome, tutte le tessere ad angolo si chiamano “corner”

    e così via….

    Diciamo che il mio metodo mi sembra più facilmente esportabile, non so..

    Se si creassero degli oggetti “off limits” diciamo invisibili e posti sui lati invalicabili delle tessere bisognerebbe farli ruotare insieme alle stesse

    visto che si permette all'utente di ruotare le tessere anche dopo che è partito il flusso (almeno per le tessere non ancora toccate dal flusso)

    Altrimenti potrei mettere una property in ogni tessera rispetto alla rotazione determinata dai vari click del mouse….in tal caso solo la tessera

    coinvolta nella rotazione cambierebbe tale property…

    Quindi potrei fare così: parte il flusso, ogni volta che entra in contatto con una tessera cerca di capire il nome dell'oggetto e dovrebbe capire il

    valore della sua property sull'angolo di rotazione (questo dopo essere stata bloccata e dopo magari aver fatto salvare tale angolo nel GlobalDict da parte

    della tessera coinvolta, anche se poi sovrascrive la stessa variabile non importa visto che al massimo può incontrare una tessera alla volta)

    A questo punto il gioco è fatto perché conoscendo la tessera e conoscendo l'angolo (90-180 etc) so anche se il flusso può passarci e verso dove 😀

    #192314

    Qwerty
    Partecipante
    • Veterano
    • ★★
    • Post sul Forum 456
    'Satherial' wrote:

    Ho trovato un esempio su come funziona ed è proprio quello che mi serviva:

    http://www.tutorials…cModule_20.html

    Attento che quell'esempio è 2.49 API.

    'Satherial' wrote:

    Questo mi servirà  per capire la disposizione delle tessere. Per la rotazione invece penso la si debba calcolare quando il flusso

    arriva alle porte della tessera successiva…Ho però notato che è veramente molto complicato capire come individuare un oggetto

    creato durante l'esecuzione del game engine perché hanno tutti lo stesso nome, tutte le tessere ad angolo si chiamano “corner”

    e così via….

    Io avevo suggerito infatti di usare dei piani con Replace mesh…

    'Satherial' wrote:

    Quindi potrei fare così: parte il flusso, ogni volta che entra in contatto con una tessera cerca di capire il nome dell'oggetto e dovrebbe capire il valore della sua property sull'angolo di rotazione […]

    Può funzionare… Ma ti rendi conto di quanti calcoli servono? Ogni parte del flusso deve fare quella verifica ogni volta che tocca una tessera… Significa che quello script viene eseguito su ogni singola tessera da ogni singolo pezzo che ci passa attraverso.

    A occhio e croce non credo che sia un lavoro sostenibile, ma non so…

    #192315

    Satherial
    Partecipante
    • Blenderista
    • Post sul Forum 41

    Ecco una mini nuova versione.

    Ho trovato secondo me una buona soluzione al problema.

    Metto un empty in parent con la testa del flusso (che per ora va solo dritta) e che riconosce le varie tessere sotto cui passa, in pratica appena le tocca.

    Appena mi creo una matrice dove salvare tutte le rotazioni eseguite dal giocatore, ho anche l'informazione sull'orientamento e così posso mettere in pratica i controlli necessari per decidere se il flusso sta seguendo una strada giusta o se sta uscendo dal selciato e posso dirgli così anche quando ruotare e proseguire in una direzione diversa 🙂

    La grafica per ora è molto approssimativa. Cercherò di lavorarci sopra dopo che finisco la parte funzionale. https://www.blender.it/uploads/monthly_08_2011/post-8664-0-89956800-1314647570.ipb

    #192316

    Qwerty
    Partecipante
    • Veterano
    • ★★
    • Post sul Forum 456

    Bella la rotazione, anche se a volte le tessere “tubo dritto” scompaiono al termine di una rotazione.

    Dovresti impedire che il giocatore possa ruotare una tessera prima che abbia finito la rotazione precedente.

    Il fluido non appare in questa versione… lo mostri nella prossima? icon_e_biggrin.gif

    #192317

    Satherial
    Partecipante
    • Blenderista
    • Post sul Forum 41

    sì per ora c'è solo una tesserina gialla che va dritta, appena riesco a direzionarla faccio in maniera tale che andando avanti “depone” dei suoi doppioni sul percorso così da “simulare” un flusso o un lungo serpentone 🙂

    Ma ci vorrà  ancora un po' credo 🙂

    Hai ragione, devo fare ancora due cose prima del restyle grafico (fase 3 dello sviluppo):

    -capire perché ogni tanto ci sono degli spazi vuoti alla creazione

    -impedire al giocatore di ruotare ulteriormente le tessere durante l'animazione

    è sicuramente nella TODO list 😀

    #192318

    Satherial
    Partecipante
    • Blenderista
    • Post sul Forum 41

    Piccolo aggiornamento:

    vorrei avere più tempo..cmq..piccolo aggiornamento, dopo aver posizionato l'empty che spedisce il raggio in alto per capire sotto quale tessera si trovi sto cercando ora di risolvere un altro paio di problemi, ci sono dei piccoli bug qua e là  che vorrei eliminare.

    Nel frattempo la tesserina capisce dove si trova e se la tessera successiva o limite dello schermo conduce a un game over oppure no, inizialmente lo avevo implementato, a scopo di test, solo per un andamento orizzontale, ora sto cercando di rendere la logica utilizzabile anche per un andamento verticale.

    Ho provato anche a inserire una rotazione che però sembra non funzionare (parte correttamente il messaggio di rotazione e lo riceve correttamente, ma non esegue l'actuator con la richiesta di ruotare). Quindi diciamo che ho quasi finito la parte logica, devo sistemare questi punti. https://www.blender.it/uploads/monthly_09_2011/post-8664-0-28923600-1315208398.ipb

    #192319

    Satherial
    Partecipante
    • Blenderista
    • Post sul Forum 41

    Ho visto che non ci sono per ora degli engine open source 3D per Android, quindi il mio progetto futuro sarà  sviluppato tramite AndEngine direttamente in Java.

    Ho comunque intenzione di finire questo lavoro che mi ha dato la possibilità  di conoscere meglio sia Blender che il linguaggio Python qui applicato.

    #192320

    Satherial
    Partecipante
    • Blenderista
    • Post sul Forum 41

    Hello, sto cercando fra mille cose almeno a dare una conclusione funzionale al progetto,anche se non credo avrò il tempo di analizzare il perché di alcuni bug né penso di creare la scia del quadratino per creare l'effetto lava…

    Quello che vorrei fare è almeno far percorrere al quadratino il percorso seguendo la direzione delle caselle e farlo arrivare alla fine vincendo o perdendo secondo le regole.

    Al momento la situazione è questa: dopo la creazione della scacchiera e il count down del timer parte il flusso costituito da un solo quadratino che ha un Empty più o meno in punta che dovrebbe capire sotto quale casella sta passando, vedere se è stata ruotata e decidere quindi se va in game over oppure no.

    E fin qui funziona, considerando che dovrebbe anche capire se, rispetto alla casella precedente, sta andando verso l'alto, il basso o sta tornando indietro e reagire quindi diversamente.

    Ora rimangono 2 problemi: fargli capire che se supera i limiti ripresi dalla camera (fissa) deve andare in game over e fargli capire che quando raggiunge uno degli Empty che costituiscono il centro delle caselle della scacchiera (infatti si chiamano A1, B2 etc) deve andare o a destra o a sinistra a seconda della casella e della sua rotazione. La direzione da prendere l'ho già  calcolata, ma non riesco a farlo girare.

    Gli script interessati sono “lava”, collegato a due sensor: always e un radar o ray e a un attuatore motion e sono relativi alla casellina della lava e che si occupa del suo movimento e lo script “exitArea” collegato a un sensor always che dovrebbe calcolare dove si trova la casellina e farla andare in gameover se supera i limiti dello screen (mi sono accorto che c'è un piccolo errore, manca un : alla fine dell'if, ma anche sistemandolo non cambia il problema)

    Se almeno riuscissi a farlo girare sarebbe un bel passo in avanti……..

    Potrei anche farlo senza rotazione volendo, anche se sarebbe meno stiloso… https://www.blender.it/uploads/monthly_10_2011/post-8664-0-30831000-1317892374.ipb

Stai vedendo 9 articoli - dal 26 a 34 (di 34 totali)

Devi essere loggato per rispondere a questa discussione.