HitSprite command gives too many results

Started by Laskiapina, January 17, 2010, 09:24:31 AM

Previous topic - Next topic

Laskiapina

I'm trying to use sprite 16 to tell whether there is ground platform (sprite 5) under it. And if there would be, the sprite 16 would fall. SPRITEHIT gives me two different results: 5 and 1 so the sprite#16 always thinks there isn't ground under it.
How am I using this wrong?

for a = 1 to 10
sprite 16,sx,sy,16: drawsprite 16
sprite 5,groundx+a,groundy,5: drawsprite 5
print "hitsprite: "+str$(spritehit(16,5,1))
next a

Function  Sprite(index,xpos,ypos,ImageIndex)
Createsprite Index
Positionsprite index,xpos,ypos
Spriteimage index,ImageIndex
EndFunction
Finished projects so far: Kumiankka, Meals of the Dragon, Fisut, Draw Old, Reikäkopio, Blindage, Escape from Millmier

Homepage: Not yet named project

kevin


it might help if you'd post something we can test..

Laskiapina

#2
dim maax(100)
dim maay(100)
dim taiteilijax(10)
dim taiteilijay(10)

rendertoscreen
boxc 0,0,800,600,1,5000

getimage 2,496,1,566,55
getimage 3,567,1,615,24
getimage 4,567,25,615,47
getimage 5,1,1,55,55
rem collision detection line
getimage 16,567,0,609,1

ankansuunta = 1
ankanjalkojenpaikat = 0
ankanjalat = 0
ankkax = 355: ankkay = 241
etujalkax = 363: etujalkay = 296
takajalkax = 363: takajalkay = 295

rem Otetaan talteen, missä maa ja Taiteilijat ovat x:ään kohden
Stage1maakoordinaatit:
maax(1) = 342: maay(1) = 318
maax(2) = 396: maay(2) = 318
maax(3) = 450: maay(3) = 318
taiteilijax(1) = 355: taiteilijay(1) = 269

rendertoscreen

for a = 1 to 16
sprite a,1,1,a:drawsprite a
next a
rem drawallsprites
sync
cls 4

do
rem Taustan väri
boxc 0,0,800,600,1,rgb(200,100,200)

ink rgb(0,0,0)
setcursor 530,50
print "spritehit: "+str$(spritehit(16,5,1))

rem THIS IS WHERE THE CHECKING SHOULD BE DONE
for mikamaa = 1 to 3
maanx = x#+maax(mikamaa): maany = y#+maay(mikamaa)
sprite 16,368,318,16: drawsprite 16
sprite 5,maanx,maany,5: drawsprite 5
next mikamaa

if ankansuunta = 1 then etujalkax = 363: takajalkax = 363
if ankansuunta = 2 then etujalkax = 369: takajalkax = 369

if ankanjalat <> 0 then sprite 3,takajalkax2,takajalkay2,3: drawsprite 3
sprite 2,ankkax,ankkay2,2: drawsprite 2
sprite 4,etujalkax2,etujalkay2,4: drawsprite 4

rem Jalkojen asennot vasemmalle käveltäessä
if ankanjalkojenpaikat = 0 then ankanjalat = 0
if ankanjalkojenpaikat > 0 and ankanjalkojenpaikat < 25 then ankanjalat = 1
if ankanjalkojenpaikat > 24 and ankanjalkojenpaikat < 49 then ankanjalat = 2
if ankanjalkojenpaikat > 48 and ankanjalkojenpaikat < 73 then ankanjalat = 3
if ankanjalkojenpaikat > 72 and ankanjalkojenpaikat < 97 then ankanjalat = 4
if ankanjalkojenpaikat > 96 and ankanjalkojenpaikat < 121 then ankanjalat = 5
if ankanjalkojenpaikat > 120 and ankanjalkojenpaikat < 145 then ankanjalat = 6
if ankanjalkojenpaikat > 144 and ankanjalkojenpaikat < 169 then ankanjalat = 7
if ankanjalkojenpaikat > 168 and ankanjalkojenpaikat < 193 then ankanjalat = 8
if ankanjalkojenpaikat > 192 and ankanjalkojenpaikat < 217 then ankanjalat = 9
if ankanjalkojenpaikat > 216 and ankanjalkojenpaikat < 241 then ankanjalat = 10
if ankanjalkojenpaikat > 240 and ankanjalkojenpaikat < 265 then ankanjalat = 11
if ankanjalkojenpaikat > 264 and ankanjalkojenpaikat < 289 then ankanjalat = 12
if ankanjalkojenpaikat > 288 and ankanjalkojenpaikat < 313 then ankanjalat = 13
if ankanjalkojenpaikat > 312 and ankanjalkojenpaikat < 337 then ankanjalat = 14

if ankanjalat = 0 then takajalkax2 = takajalkax: takajalkay2 = takajalkay: etujalkax2 = etujalkax: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = 1 then takajalkax2 = takajalkax: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = 2 then takajalkax2 = takajalkax-2: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax+2: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = 3 then takajalkax2 = takajalkax-4: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax+4: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = 4 then takajalkax2 = takajalkax-6: takajalkay2 = takajalkay-4: etujalkax2 = etujalkax+6: etujalkay2 = etujalkay-2: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = 5 then takajalkax2 = takajalkax-6: takajalkay2 = takajalkay-2: etujalkax2 = etujalkax+6: etujalkay2 = etujalkay-4: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = 6 then takajalkax2 = takajalkax-4: takajalkay2 = takajalkay: etujalkax2 = etujalkax+4: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = 7 then takajalkax2 = takajalkax-2: takajalkay2 = takajalkay: etujalkax2 = etujalkax+2: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-3
if ankanjalat = 8 then takajalkax2 = takajalkax: takajalkay2 = takajalkay: etujalkax2 = etujalkax: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-3
if ankanjalat = 9 then takajalkax2 = takajalkax+2: takajalkay2 = takajalkay: etujalkax2 = etujalkax-2: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = 10 then takajalkax2 = takajalkax+4: takajalkay2 = takajalkay: etujalkax2 = etujalkax-4: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = 11 then takajalkax2 = takajalkax+6: takajalkay2 = takajalkay-2: etujalkax2 = etujalkax-6: etujalkay2 = etujalkay-4: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = 12 then takajalkax2 = takajalkax+6: takajalkay2 = takajalkay-4: etujalkax2 = etujalkax-6: etujalkay2 = etujalkay-2: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = 13 then takajalkax2 = takajalkax+4: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax-4: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = 14 then takajalkax2 = takajalkax+2: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax-2: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay

rem Jalkojen asennot oikealle käveltäessä
if ankanjalkojenpaikat < 0 and ankanjalkojenpaikat > -25 then ankanjalat = -1
if ankanjalkojenpaikat < -24 and ankanjalkojenpaikat > -49 then ankanjalat = -2
if ankanjalkojenpaikat < -48 and ankanjalkojenpaikat > -73 then ankanjalat = -3
if ankanjalkojenpaikat < -72 and ankanjalkojenpaikat > -97 then ankanjalat = -4
if ankanjalkojenpaikat < -96 and ankanjalkojenpaikat > -121 then ankanjalat = -5
if ankanjalkojenpaikat < -120 and ankanjalkojenpaikat > -145 then ankanjalat = -6
if ankanjalkojenpaikat < -144 and ankanjalkojenpaikat > -169 then ankanjalat = -7
if ankanjalkojenpaikat < -168 and ankanjalkojenpaikat > -193 then ankanjalat = -8
if ankanjalkojenpaikat < -192 and ankanjalkojenpaikat > -217 then ankanjalat = -9
if ankanjalkojenpaikat < -216 and ankanjalkojenpaikat > -241 then ankanjalat = -10
if ankanjalkojenpaikat < -240 and ankanjalkojenpaikat > -265 then ankanjalat = -11
if ankanjalkojenpaikat < -264 and ankanjalkojenpaikat > -289 then ankanjalat = -12
if ankanjalkojenpaikat < -288 and ankanjalkojenpaikat > -313 then ankanjalat = -13
if ankanjalkojenpaikat < -312 and ankanjalkojenpaikat > -337 then ankanjalat = -14

if ankanjalat = -1 then takajalkax2 = takajalkax: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = -2 then takajalkax2 = takajalkax+2: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax-2: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = -3 then takajalkax2 = takajalkax+4: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax-4: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = -4 then takajalkax2 = takajalkax+6: takajalkay2 = takajalkay-4: etujalkax2 = etujalkax-6: etujalkay2 = etujalkay-2: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = -5 then takajalkax2 = takajalkax+6: takajalkay2 = takajalkay-2: etujalkax2 = etujalkax-6: etujalkay2 = etujalkay-4: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = -6 then takajalkax2 = takajalkax+4: takajalkay2 = takajalkay: etujalkax2 = etujalkax-4: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = -7 then takajalkax2 = takajalkax+2: takajalkay2 = takajalkay: etujalkax2 = etujalkax-2: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-3
if ankanjalat = -8 then takajalkax2 = takajalkax: takajalkay2 = takajalkay: etujalkax2 = etujalkax: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-3
if ankanjalat = -9 then takajalkax2 = takajalkax-2: takajalkay2 = takajalkay: etujalkax2 = etujalkax+2: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = -10 then takajalkax2 = takajalkax-4: takajalkay2 = takajalkay: etujalkax2 = etujalkax+4: etujalkay2 = etujalkay-6: ankkax2 = ankkax: ankkay2 = ankkay-2
if ankanjalat = -11 then takajalkax2 = takajalkax-6: takajalkay2 = takajalkay-2: etujalkax2 = etujalkax+6: etujalkay2 = etujalkay-4: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = -12 then takajalkax2 = takajalkax-6: takajalkay2 = takajalkay-4: etujalkax2 = etujalkax+6: etujalkay2 = etujalkay-2: ankkax2 = ankkax: ankkay2 = ankkay-1
if ankanjalat = -13 then takajalkax2 = takajalkax-4: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax+4: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay
if ankanjalat = -14 then takajalkax2 = takajalkax-2: takajalkay2 = takajalkay-6: etujalkax2 = etujalkax+2: etujalkay2 = etujalkay: ankkax2 = ankkax: ankkay2 = ankkay

sync

rem Tarkkaillaan näppäimistöä
if leftkey() = 0 and rightkey() = 0 then ankanjalkojenpaikat = 0
if leftkey() = 1 and rightkey() = 1 then ankanjalkojenpaikat = 0

if leftkey() = 1 and rightkey() = 0 and ankansuunta = 2 then mirrorimage 2,1,0: ankansuunta = 1: mirrorimage 3,1,0: mirrorimage 4,1,0
if leftkey() = 1 and rightkey() = 0 then ankanjalkojenpaikat = ankanjalkojenpaikat + 3: x# = x# + 1
if rightkey() = 1 and leftkey() = 0 and ankansuunta = 1 then mirrorimage 2,1,0: ankansuunta = 2: mirrorimage 3,1,0: mirrorimage 4,1,0
if rightkey() = 1 and leftkey() = 0 then ankanjalkojenpaikat = ankanjalkojenpaikat - 3: x# = x# - 1
if ankanjalkojenpaikat > 337 then ankanjalkojenpaikat = 1
if ankanjalkojenpaikat < -337 then ankanjalkojenpaikat = -1
loop

Function  Sprite(index,xpos,ypos,ImageIndex)
Createsprite Index
Positionsprite index,xpos,ypos
Spriteimage index,ImageIndex
EndFunction


That's the program so far (with some cuts). I hope you get something out of it. I would like it to check every ground block if it's under the player.
Finished projects so far: Kumiankka, Meals of the Dragon, Fisut, Draw Old, Reikäkopio, Blindage, Escape from Millmier

Homepage: Not yet named project

Laskiapina

Nevermind, I got it to work with this: dim tiputustarkistus(3)
tiputustarkistus(mikamaa) = spritehit(16,5,1)
next mikamaa

tiputa = 1
for mikamaa = 1 to 3
if tiputustarkistus(mikamaa) = 5 then tiputa = 0
next mikamaa
if tiputa = 1 then y# = y# - 2
Finished projects so far: Kumiankka, Meals of the Dragon, Fisut, Draw Old, Reikäkopio, Blindage, Escape from Millmier

Homepage: Not yet named project