• 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
Problema con Newton
#3
Questa è la sub per creare e inizializzare la fisica Smile
Codice:
// Creazione gruppi fisici
crea_fisica:
    // Avvia il motore fisico
    NDB_NewtonCreate
    
    // Crea un mondo di default
    NDB_SetVector 1, -5000.0, -5000.0, -5000.0 // Parte da rivedere
    NDB_SetVector 2, 5000.0, 5000.0, 5000.0    // Parte da rivedere
    NDB_NewtonSetWorldSize
    
    // Gravità
    NDB_SetVector 0.0, -50.0, 0.0
    NDB_SetStandardGravity
    
    // Gruppi fisici
    NDB_Group_Default = NDB_NewtonMaterialGetDefaultGroupID()
    NDB_Group_Player = NDB_NewtonMaterialCreateGroupID()
    
    // NDB_Group_Default > NDB_Group_Player
    NDB_NewtonMaterialSetDefaultFriction NDB_Group_Default, NDB_Group_Player, 0.01, 0.01
    NDB_NewtonMaterialSetDefaultElasticity NDB_Group_Default, NDB_Group_Player,  0.01
return
I 2 gruppi fisici servono solamente al giocatore principale per eliminare l'attrito, ma non li ho ancora usati.

Questa è la funzione che uso per creare il cubo. Non fare caso a ENT_Crea() e a ENT_getObjID(i), servono per aggiungere 1 entità alla lista delle entità e per prendere l'oggetto assegnato a quell'entità Wink


Codice:
// Creazione di un cubo
function ENT_makeBox(sizex,sizey,sizez,x,y,z,anglex,angley,anglez)
    // Crea lo spazio per un'entità
    i = ENT_crea()
    // Prendiamo l'oggetto dell'entità
    obj = ENT_getObjID(i)
    // Crea il cubo in darkbasic
    make object box obj,sizex,sizey,sizez
    position object obj, x,y,z
    rotate object obj, anglex,angley,anglez
    // Crea il cubo in newton
    collIndex = NDB_NewtonCreateBox( sizex,sizey,sizez )
    // Creo il rigidbody per la collissione
    Body = NDB_NewtonCreateBody( collIndex )
    arrEntita(i).bodyID = Body;
    
    // Setto angolazione e posizione
       NDB_BuildMatrix  object angle x(obj), object angle y(obj), object angle z(obj) , object position x(obj) , object position y(obj)-size, object position z(obj)
       NDB_NewtonBodySetMatrix Body
  
    // Setto la massa e il momento di inerzia
    mass# = 50
    NDB_CalculateMIBoxSolid mass#, size, size, size
    NDB_NewtonBodySetMassMatrix Body, mass#
    // Rilascio la collisione
    NDB_NewtonReleaseCollision collIndex
    // ... e collego l'oggetto fisico a quello visuale.
    NDB_BodySetDBProData body, obj
    NDB_NewtonBodySetDestructorCallback Body
    NDB_BodySetGravity Body, 1
endfunction i

Questa è la sub per caricare il mondo:
Codice:
carica_mondo:
    cls
    CENTER TEXT screen width()/2,screen height()/2, "Caricamento del mondo in corso...."
    SYNC

    // Step 1: Caricamento del mondo
    objWorld = FreeObject()
    load object "media\levels\ndb.dbo", objWorld
    // Step 2: Creazione delle collisioni
    Col = NDB_NewtonCreateTreeCollision( objWorld )
    Room = NDB_NewtonCreateBody( Col )
    // Step 3: Collegamento oggetti
    NDB_BodySetDBProData Room, objWorld
    NDB_NewtonBodySetDestructorCallback Room
    // Rilascio memoria
    NDB_NewtonReleaseCollision Col
    // Caricamento dei dati del mondo
    gosub carica_dati_mondo
return

Il ciclo di gioco è semplice:
Codice:
    if shiftkey() = 1 and oldshift = 0
        x# = -100
        y# = 800
        z# = 800
        ENT_makeBox(50,50,50,x#,y#,z#,0,0,0)
    endif
    oldshift = shiftkey()
    
    // Aggiorna la fisica
    time# = NDB_GetElapsedTimeInSec()
    NDB_NewtonUpdate time#
              sync
E' davvero strano, fino a ieri funzionava tutto o.o
 
Rispondi
  


Messaggi in questa discussione
Problema con Newton - da Sweet Vengeance - 06-01-2011, 11:43 AM
RE: Problema con Newton - da Zapetino - 06-01-2011, 01:48 PM
RE: Problema con Newton - da Sweet Vengeance - 06-01-2011, 03:12 PM
RE: Problema con Newton - da Zapetino - 06-01-2011, 05:36 PM
RE: Problema con Newton - da Sweet Vengeance - 06-01-2011, 07:17 PM
RE: Problema con Newton - da Zapetino - 06-01-2011, 08:01 PM
RE: Problema con Newton - da Sweet Vengeance - 06-01-2011, 09:10 PM
RE: Problema con Newton - da Zapetino - 06-01-2011, 09:44 PM
RE: Problema con Newton - da Sweet Vengeance - 06-01-2011, 10:01 PM
RE: Problema con Newton - da Zapetino - 06-01-2011, 10:55 PM
RE: Problema con Newton - da Sweet Vengeance - 07-01-2011, 02:12 AM

Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Problema con darkshader.. Alche 1 1,192 03-04-2011, 10:09 AM
Ultimo messaggio: Jonathan Archer
  DarkBasic Newton Wrapper Riddick 16 3,143 17-11-2010, 04:04 PM
Ultimo messaggio: Alche

Vai al forum:


Browsing: 1 Ospite(i)