CoolBasic SDK

UpdateSpace

Include "cbGravitationPhysics.cb"

KUVAUS
Tämä funktio on erittäin tärkeä. Se päivittää painovoiman ja liikkeen avaruudessa, joten kutsu sitä pääluupissa. Kaikki objektit joille on asetettu massa osallistuvat päivitykseen.

Kuinka asetan massan?
Käytä ObjectFloat komentoa. Esim: ObjectFloat planeetta, 100

Minkälainen massan pitäisi olla?
  • Avaruusaluksilla ja muilla kappaleilla, joiden vetovoiman halutaan olevan olematon, asetetaan erittäin pieni massa. 0.00001 on hyvä arvo.
  • Planeetoilla ja muilla merkittävän vetovoiman omaavilla kappaleilla on isompi massa. 5-500 ovat yleensä hyviä arvoja.
  • Auringolla ja tähdillä, joiden ympärillä kaikki muu kiertää pitää olla vieläkin suurempi massa. >1000 ovat hyviä arvoja.

Entä jos haluaisin avaruusaluksen liikkuvan oikein, mutta että painovoima ei siihen vaikuttaisi?
Komenna: ObjectInteger obj, 1

Muuttujan gamma arvo vaikuttaa vetovoimaan. Oletuksena on 1.0

KÄYTTÖ
UpdateSpace()

Katso myös: Gravitaatio / painovoima

ESIMERKKI
Include "sdk/include/cbGravitationPhysics.cb"
SCREEN 800,600

// Tehdään taustakuva
bgspace = MakeImage(100,100)
DrawToImage bgspace
    For i = 1 To 100
        Dot Rand(0,99), Rand(0,99)
    Next i
DrawToScreen
spacefloor = MakeObjectFloor()
PaintObject spacefloor, bgspace

alus = LoadObject("Media/ship.bmp",72): ObjectFloat alus, .00001
earth = LoadObject("sdk/Media/earth.png"): ObjectFloat earth, 1000
PositionObject alus, 100, 0
SetObjectOrbit(alus,earth)
SetupCollision alus,earth,2,2,2

Repeat

    If LeftKey() Then TurnObject alus, 3
    If RightKey() Then TurnObject alus, -3
    If UpKey() Then ThrustObject(alus,.1)
    If DownKey() Then ThrustObject(alus,-.1)

    UpdateSpace()
    CloneCameraPosition alus

    DrawScreen
Forever