Hey,
Ik ben bezig aan een klein mario-achtig spelletje. de levels bestaan uit blokken van bepaalde materie, en evt ook wat flags.
Een voorbeeld is:
Elk object bestaat uit: [id,x,y,width,height,image,flags]
Om collision van dynamische objecten te doen, doe ik het volgend:
For elk object
If (oude position was boven of gelijk aan posititie andere object en nieuwe position is in of onder positie andere object) {
//snelheid y=0, en y=positie zodat ie gelijk op andere object staat
} else if (oude position was links van.....) {
...
} else ...
Dit werkt op zich prima, maar bij sommige objecten geeft hij problemen
Als je bijvoorbeeld een rechtopstaande muur hebt die bestaat uit verschillende objecten, en je houdt pijltje naar rechts in dan gebeurt er dit:
Gravity gooit object naar beneden, pijltje drukt hem naar rechts (de muur in)
Als je dan bij een splitsing tussen twee objecten zit, waarvan het bovenste object later in de array van objecten zit, dan ziet eerst het onderste object dat hij eerste boven en nu onder zit -> stilzetten en terugzetten. Daarna pas wordt het object weer terug van de muur gedrukt.
Dit resulteert erin dat je een muur uit verschillende objecten op kan klimmen door je pijltje erin ingedrukt te houden, en af en toe op jump te drukken
Uiteraard is dit niet de bedoeling...
Nu de vraag:
Weet iemand een oplossing, of een andere manier om dit aan te pakken ?
Alvast bedankt,
TB
Ik ben bezig aan een klein mario-achtig spelletje. de levels bestaan uit blokken van bepaalde materie, en evt ook wat flags.
Een voorbeeld is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| var level1=[
["name","Fill in"],
["width",800],
["height",320],
["Objects",[
["Object14",0,304,192,16,imgWall],
["player1",32,288,16,16,imgPlayer1,GO_DYNAMIC],
["player2",64,288,16,16,imgPlayer2,GO_DYNAMIC],
["Object13",192,288,32,32,imgWall],
["Object12",224,304,576,16,imgWall],
["Object11",256,160,16,16,imgWall],
["Object10",256,176,16,16,imgIce],
["Object09",256,192,16,16,imgWall],
["Object08",256,208,16,16,imgIce],
["Object07",256,224,16,16,imgWall],
["Object06",256,240,16,16,imgIce],
["Object05",256,256,16,16,imgWall],
["Object04",256,272,16,16,imgIce]
]]
]; |
Elk object bestaat uit: [id,x,y,width,height,image,flags]
Om collision van dynamische objecten te doen, doe ik het volgend:
For elk object
If (oude position was boven of gelijk aan posititie andere object en nieuwe position is in of onder positie andere object) {
//snelheid y=0, en y=positie zodat ie gelijk op andere object staat
} else if (oude position was links van.....) {
...
} else ...
Dit werkt op zich prima, maar bij sommige objecten geeft hij problemen
Als je bijvoorbeeld een rechtopstaande muur hebt die bestaat uit verschillende objecten, en je houdt pijltje naar rechts in dan gebeurt er dit:
Gravity gooit object naar beneden, pijltje drukt hem naar rechts (de muur in)
Als je dan bij een splitsing tussen twee objecten zit, waarvan het bovenste object later in de array van objecten zit, dan ziet eerst het onderste object dat hij eerste boven en nu onder zit -> stilzetten en terugzetten. Daarna pas wordt het object weer terug van de muur gedrukt.
Dit resulteert erin dat je een muur uit verschillende objecten op kan klimmen door je pijltje erin ingedrukt te houden, en af en toe op jump te drukken
Uiteraard is dit niet de bedoeling...
Nu de vraag:
Weet iemand een oplossing, of een andere manier om dit aan te pakken ?
Alvast bedankt,
TB
[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]