Avatar billede treypocca Nybegynder
19. januar 2003 - 14:52 Der er 8 kommentarer

Sprite within Sprite*10

Jeg har en sprite som bruges til at skude 10 andre sprite's ned med.
Jeg bruger Sprite(N) within Sprite(W) 10 gange, er der ikke en nemmere måde at gøre dette. Sprite(n) within Sprite(9 to 18)???
Avatar billede jakobclausen Nybegynder
19. januar 2003 - 16:30 #1
Jeg forstår slet ikke dir spørgsmål
Avatar billede sparkl Nybegynder
19. januar 2003 - 17:51 #2
repeat with W = 8 to 19
  if Sprite(N) within Sprite(W) then
    --do something
  end if
end repeat
Avatar billede sparkl Nybegynder
19. januar 2003 - 17:52 #3
skulle have stået 8 to 18.... ;)
Avatar billede sparkl Nybegynder
19. januar 2003 - 17:53 #4
hehe...

og der skulle der have stået 9 to 18.....

det er svært det med tal... :)
Avatar billede treypocca Nybegynder
20. januar 2003 - 16:34 #5
Dit forslag var også min egen mulige løsning, men den repeat'er kun en gang eller X antal gange dvs. W har ikke en konstant værdi af 9 til 18 konstant.
Avatar billede sparkl Nybegynder
20. januar 2003 - 17:23 #6
ok... hvad er det du ønsker at opnå med en anden metode...?
Avatar billede kanding Nybegynder
13. marts 2003 - 14:19 #7
Hvis alle de sprites du skal skyde ned, har et script på sig ala:

on shoot me 
  if sprite(me.spriteNum).intersects(sprite(10)) then
    -- dø på en eller anden måde
  end if
end

så kan du når du skyder kalde:

sendAllSprites(#shoot)

Grunden til at jeg bruger intersects er, at within kræver at sprite'n er fuldstændig indenfor den ande sprite og det er ret svært i et skyde spil. Men hvis du vil have den med kan du bare lave det om der hvor jeg tester overneover

kanding
Avatar billede maxwest Nybegynder
01. maj 2003 - 14:30 #8
bemærk at

sprite(me.spriteNum).within(10)

er 3-4 gange langsommere sammenlignet med følgende metode:

Jeg har netop lavet ét færdigt script baseret på "within" kommandoen, og ét script der "emulere" "within" kommandoen ved at jeg benyttet "intersect" kommandoen i stedet og derefter sammenligner x og y koordinaterne mellem hver sprite (dvs. mellem sprite 10 og me.spriteNum). "intersect" versionen fylder 3-4 gange flere linier, men den er paradoksalt nok 3-4 gange hurtigere.

Herefter har jeg sammenlignet forbruget af millisekunder efter 10.000 gennemløb, og på min pc kostede "within" rutinen i gennemsnit ca. 20 millisekunder, og "intersect" rutinen som kostede i gennemsnit ca. 5 millisekunder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester