Vai al contenuto
Halaster

Dubbio Dark Basic

Recommended Posts

Ciao, sono nuovo... ho visto che c'è qualcuno che usa o usava DarkBasic. :lol:

Il mio dubbio è questo: ho creato un personaggio in 3d studio max 7, l'ho esportato con tanto di animazioni come file X usando il plugin "Panda Direct X". Il sistema di controllo prevede una vista dall'alto del personaggio e la possibilità di camminare nelle 4 direzioni. Il personaggio si deve girare quando lo faccio andare verso una di queste direzioni. E qui sta il dilemma! nel senso che si gira ma non riesco a ruotare gli oggetti esportati come file X come voglio: Non li ruota attorno al proprio centro ma usa un asse scentrato il che non mi va per niente bene perchè nel mio caso, quando il personaggio si gira non si ritrova nella stessa posizione che aveva prima ma è leggermente spostato. Ho usato sia rotate object che roll object e nulla lo fa girare su se stesso. Ho persino spostato il "pivot" dell'oggetto in 3d studio in modo che fosse al centro della figura ma senza alcun risultato.

Spero che possiate aiutarmi.. :crying:

Ecco il codice:

REM Project: Prova

REM Created: 02/01/2006 18.13.46

REM

REM ***** Main Source File *****

REM


rem ______________________________________________________________________________________________

rem								   COMANDI PRINCIPALI


if check display mode(1024,768,32)=1 then set display mode 1024,768,32

sync on : sync rate 85 : backdrop off : hide mouse


make matrix 1, 1000,1000,10,10

position matrix 1,0,0,0

make camera 1


position camera 1,-50,250,-100

point camera 1,500,0,500


load image "Matrix.bmp",1

prepare matrix texture 1,1,3,3

set matrix texture 1,1,1


load object "Personaggio.X",1

position object 1,200,-22,200

fix object pivot 1

rotate object 1,0,90,90

scale object 1,50,50,50

set object speed 1, 12000


rem ______________________________________________________________________________________________

rem								   LOOP PRINCIPALE


DO


set text size 49

set cursor 20,0 : print "Frames Totali dell'Oggetto:"

set cursor 40,30 : print total object frames(1)


rem **Controllo del personaggio**


if DownKey()=0 : if LeftKey()=0 : if RightKey()=0

if UpKey()=1

if Angolo = 180.0 then roll object left 1,180.0 : Angolo = 0.0

if Angolo = 270.0 then roll object right 1,90.0 : Angolo = 0.0

if Angolo = 90.0 then roll object left 1,90.0 : Angolo = 0.0


loop object 1,3200,19200 : move object left 1,1.5

else set object frame 1,1

endif endif endif endif




if UpKey()=0 : if LeftKey()=0 : if RightKey()=0

if DownKey()=1

if object angle x(1) = 0.0 then roll object right 1,180.0 : Angolo = 180.0

if Angolo = 0.0 then roll object right 1,180.0 : Angolo = 180.0

if Angolo = 270.0 then roll object left 1,90.0 : Angolo = 180.0

if Angolo = 90.0 then roll object right 1,90.0 : Angolo = 180.0


loop object 1,3200,19200 : move object Left 1,1.5

else set object frame 1,1

endif endif endif endif



if DownKey()=0 : if LeftKey()=0 : if UpKey()=0

if RightKey()=1

if object angle x(1) = 0.0 then roll object left 1,90.0 : Angolo = 270.0

if Angolo = 0.0 then roll object left 1,90.0 : Angolo = 270.0

if Angolo = 90.0 then roll object right 1,180.0 : Angolo = 270.0

if Angolo = 180.0 then roll object right 1,90.0 : Angolo = 270.0


loop object 1,3200,19200 : move object Left 1,1.5

else set object frame 1,1

endif endif endif endif




if DownKey()=0 : if RightKey()=0 : if UpKey()=0

if LeftKey()=1

if object angle x(1) = 0.0 then roll object right 1,90.0 : Angolo = 90.0

if Angolo = 0.0 then roll object right 1,90.0 : Angolo = 90.0

if Angolo = 270.0 then roll object right 1,180.0 : Angolo = 90.0

if Angolo = 180.0 then roll object left 1,90.0 : Angolo = 90.0


loop object 1,3200,19200 : move object Left 1,1.5

else set object frame 1,1

endif endif endif endif




sync

LOOP


Modificato da Halaster

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Incredibile :eek: ... ho capito finalmente... non pensavo che ruotasse proprio usando gli stessi assi di 3d studio.. ma ora capisco che è cosi' perchè per risolvere mi è bastato spostare la figura al centro di quegli assi ed esportarla cosi'. <_< a saperlo prima!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Si per le rotazioni devi assicurarti di aver ben impostato gli assi

nell'origine desiderata.

A volte è consigliabile al centro dell'oggetto mentre per altre al centro della base, inoltre puoi creare un OGGETTO DI COGNIZIONE costituito da un minuscolo cubo oppure da un plain il quale gli oggetti da te caricati li colleghi con il comando UNGLUE OBJECT TO LIMB , ed ogni movimento effettuato sul membro radice comporta lo spostamento e/o rotazione dell'oggetto collegato.

Per le rotazioni era sufficiente incrementare con una variabile il valore del nuovo angolo ruotato, tenendo conto che in darkbasic vi è un comando che automaticamente INTERPOLA il valore incrementato nel caso dovesse superare il limite del giro, cioè per la versione DB v1

devi usare il comando

NuovoAngolo=WRAPVALUE(NuovoAngolo)

in modo che se incrementi la variabile e questa variabile supera il valore 360 , questo automaticamente lo riporta a 0 senza restituire l'errore di limite del valore min o max superato di 0 e 360.

Per le rotazioni è conveniente usare i comandi

XROTATE OBJECT NumeroOggetto,WRAPVALUE(AngoloX#)

YROTATE OBJECT NumeroOggetto,WRAPVALUE(AngoloY#)

ZROTATE OBJECT NumeroOggetto,WRAPVALUE(AngoloZ#)

Oppure:

ROTATE OBJECT NumeroOggetto,WRAPVALUE(AngoloX#),WRAPVALUE(AngoloY#), WRAPVALUE(AngoloZ#)

tenendo presente che il sistema ruota prima sull'asseX poi su quello Y e poi su quello Z

X=asse di larghezza

Y=Asse di altezza

Z=asse di profondita

perchè come predefinito in DEFAULT è attivo il comando:

SET OBJECT ORIENTAZION XYZ

Se vuoi cambiare l'ordine della successione delle rotazioni devi usare il comando:

SET OBJECT ORIENTAZION ZYX che inverte l'ordine di rotazione.

Per visualizzare sullo schermo gli fps del rendering devi aggiungere il comando che nella lista dei comandi del darkbasic RESTITUISCE UN RISULTATO cioè ritornano un valore quindi SCREEN FPS()

ESEMPIO (Con il text no con il print):

TEXT 50,50,"FPS correnti = " + STR$(SCREEN FPS() )

LA struttura degli IF lascia desiderare.

Se hai bisogno di una mano con il DARKBASIC vai al sito I T A L I A N O del darkbasic , c'è buona gente disponibilissima (IO per esempio :-) ) a darti una mano.

La rotazione di un oggetto si puo' anche effettuare di un grado e come la fai tu da 90 rende poco fluido il game.

Se vuoi settimana prossima te lo correggo. Oppure prima se trovo un buco di tempo.

INTANTO SE TI INTERESSA HO POSTATO LA BESE DI UN MOVIMENTO CON SELEZIONE E DESTINAZIONE PER UN GIOCO RTS nel forum di darkbasic ITALIANO che penso possa essere utile, devi solo caricare gli omini al posto dei primitivi e il tuo gioco è fatto!

I TUOI OGGETTI 3D IN UNA BASE DI GIOCO 3D!!!!

ECCO QUI IL LINK :

http://lnx.kataxia.com/web/forums/viewtopic.php?t=880

Prossimamente faro' un FPS Tutorials!!!!

NEL CD DI DARK BASIC C'E' UN PROGRAMMA CHE CONVERTE I FILE .3DS IN .X

E SI CHIAMA DBConverter, ma il darkbasic supporta sia .3ds che .X !!!


Modificato da DARKTy

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

DARKTy - :Clap03::Clap03::Clap03::Clap03::Clap03::Clap03::Clap03::Clap03:

hai mai pensato (se hai tempo naturalmente) di fare un bel tutorial (magari video, che attraggono anche + gente :devil: ) dove spieghi le basi di DarkBasic? Ci sono molti grafici che vorrebbero entrare in questa concezione di 3D che si sta evolvendo velocemente, in più DarkBasic è un linguaggio semplice ma pieno di sbocchi sono certo che l'apprendimento risulti piuttosto immediato (se ben spiegato, e sembra che tu lo sappia spiegare bene :D) e quindi alla portata di tutti :D

Grazie anche solo per l'interessamento :D :D :D

Ciao :D

P.S - non è una richiesta menefreghista B) , e che anche a me piacerebbe poter fare tutorial simili (e roba simile, sopratutto) , ma non ho le capacità effettive per farlo :D

Grazie e ciao ancora :D

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ki ha i 2 cd originali della Microforum da soli 9€ del DARK BASIC v1 ha il vantaggio di avere la guida in ITALIANO e di comprendere appieno tutta la lista dei comandi del DARK in modo piu' rapido.

Negli stessi CD ci sono ENORMI QUANTITA' DI TUTURIAL che da passo 0 ti istruiscono fino a programmi piu' complessi, inoltre nel SECONDO CD INCLUSO , vi sono i CODE SNIPPET ovvero codici di esempio, e alcuni di questi contengono esempi di LIBRERIE AD OGGETTI. (pulsanti,messagebox,caselle di testo,browser, ecc...)

Tutorial Video non me la sento di farne per il momento.

Se vuoi posso farti qualche programma in base alla tua esigenza di apprendimento , completo di descrizione e postartelo qui o nei tutorials.

Inoltre, mi sembra che tu ti trovi con il c++, quindi tu hai una possibilità in piu':

1 usare il C++ con il DarKBasic

2 usare il Torque o irrilicht

Di recente un piccolo gruppetto di ITALIANI sembrano essere riusciti a

realizzare missioni in Torque (non sono sicuro che siano riusciti anche a realizzare il player nemico) cmq faccio a loro i miei complimenti, perchè sono gli unici se non i soli ITALIANI che ci siano riusciti.

Ho visto che hanno postato su Treddi nella categoria OFFRO LAVORO non retribuito , il link:

http://www.treddi.com/forum/index.php?showtopic=17401 , prova poi a

guardare il loro sito , sembra essere interessante. Non ho ancora avuto tempo di scaricare i tutorial , e non se se ne avro' tempo cmq promette bene.

CIAO!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Nota: anche se dicono che il dark a problemi nel gestire le collisioni, questo puo' essere superato con accorgimenti tecnici.

Di recente sono riuscito a gestire le collisioni per veicoli su rampe, e le nuove posizioni in Y per l'oggetto giocatore sono ottime. Ora sto cercando di fare un editor per posizionare queste rampe come pista personalizzata.

Nel secondo cd del darkbasic nella cartella MEDIA ci sono inoltre un infinità di oggetti 3D che si possono inserire nei progetti , e sono suddivisi in varie categorie , personaggi,armi,veicoli ecc.. inoltre vi sono anche i suoni , per gli impatti, per i pulsanti, e le musiche di sottofondo. E' chiaro che sono strausati e quindi il programmatore tende all'originalità e all'esclusività dei file di risorsa.

Tempo fa , avevo iniziato un mio progetto: SPEED VISUAL DARK BASIC (SVDB) con il DarkBasic e il Vb che avrebbe dovuto essere simile al Torque , ma con le IGU (Interfaccie Grafiche Utente (SIGLA in Italiano!!) ) piu' veloci del TORQUE con una metodologia di sviluppo a finestre ad oggetti esterne (Con Metodo Comunicazione a file Seq. ).

Il progetto mi richiede tempo per cui sto dando priorità ad altri progetti per cercare lavoro , ma è già a buon punto e non voglio parlarne di più.


Modificato da DARKTy

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao Halaster,

ieri notte ho scritto il programma per il movimento dell'omino 3d nella scena con i tasti ,

ruota non solo di 90 gradi, ma di un grado e avanza nella direzione dell'angolo in cui si trova (quindi in tutte le direzioni)

se ti interessa te lo posto, e se si può lo puoi mettere come tutorial. Fammi sapere se ti interessa che te lo posto qui stasera dopo le 9. Ciao!

DarkTy

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Darkty una domanda...su dark BASIC si riesce a far eseguire più operazioni alla volta? Per esempio sto cercando di fare un gioco in 2d e come faccio a rendere animato lo sprite mentre si muove sullo schermo? Io per renderlo animato ho creato più immagini che vengono caricate in sequenza...solo che prima che lo sprite si muova, deve finire la sequenza di immagini! E quindi lo sprite va avanti a scatti...non si riuscirebbe a far eseguire due operazioni alla volta? Tipo mettendo due condizioni "if then" uguali che eseguono azioni differenti? La soluzione sarebbe creare una animazione in 2d, però io non ho il programma adatto

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×