Mikäli tilekartat ovat erittäin laajoja, niin mitä tapaa suosittelette, kun halutaan lisätä ohjelmaan kerättävät objektit ?
Kannattaako ne lisätä tile tarkistuksen kautta vai taulukoilla ?
Vai onko datakerros paras vaihtoehto ?
Haluan lisätä objektit peliin itse määräämilleni paikoille
Törmäykset ovat hanskassa, mutta objektin poistot eivät vielä ole auenneet
Löytyykö tähän helppoa keinoa ?
Kiitos etukäteen !
Tilekartat ja objektit
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: Tilekartat ja objektit
Helpoin tapa lisäillä tilejen päälle CB-objekteja lienee ajaa läpi seuraavanlainen silmukka:
Karttaa tehdessä tulee siis asettaa sopiva data-arvo haluttuihin tileihin. Valtavilla kartoilla tuo silmukan ajo toki kestää jonkin aikaa, mutta se tuskin muodostuu silti pullonkaulaksi.
Objektien poisto menisi vastaavasti tähän tapaan:
Code: Select all
Type OBJEKTI_TYYPPI
Field obj
EndType
For y = 1 To MapHeight()
For x = 1 To MapWidth()
If GetMap2(3, x, y) = joku_data_arvo Then
joku.OBJEKTI_TYYPPI = New(OBJEKTI_TYYPPI)
joku\obj = //Tähän joku sopiva alustus, esim. CloneObject()-funktiokutsu
PositionObject joku\obj, tile_leveys*(-0.5*MapWidth() + x - 0.5) + ObjectX(kartta), tile_leveys*(-0.5*MapWidth() - y + 0.5) + ObjectY(kartta)
objekteja_lisatty = objekteja_lisatty + 1
EndIf
Next x
Next y
Objektien poisto menisi vastaavasti tähän tapaan:
Code: Select all
//Pelin pääsilmukka
Repeat
...
For o.OBJEKTI_TYYPPI = Each OBJEKTI_TYYPPI
If ObjectsOverlap(pelaaja, o\obj, kosketus_tapa) Then
objekteja_keratty = objekteja_keratty + 1
DeleteObject o\obj
Delete o
EndIf
Next o
...
Forever
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Re: Tilekartat ja objektit
Todella ISO KIITOS .