Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Collision detection mellan banan och spelaren

Postades av 2004-04-24 15:45:41 - August Gustavsson, i forum spel/grafik, Tråden har 12 Kommentarer och lästs av 1306 personer

Hejsan!
Jag håller på med ett spel som fungerar ungefär som super mario/megaman. Mitt problem just nu är att jag inte riktigt vet vad jag ska ha för strategi när jag kollar om spel karaktären kan stå där han står eller om det är en dit han gåt osv., ni förstår! Jag hade en fungerande funktion för detta förut men sen gick jag över till tile baserade banor, då blev allt mycket krångligare... Någon som kan berätta lite hur man ska göra?
Lite info om banorna:
50x30 tiles (för tillfället)
varje tile är 16x16 px stora.
Tile systemet fungerar, jag har en klass som heter Tile, och den skapar jag en två-dimensionell array av och sen ritar jag ut en bana som den läser in från en xml fil. varje tile har några egenskaper som t.ex bool solid, bool visible, bool empty, och lite till.

Tacksam för svar!


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 18:10:07 - Niklas Jansson

Nu kraschade datorn precis när jag hade skrivit ett långt inlägg, så jag ställer bara en fråga så orkar jag nog svara sen istället...
Är en hel tile solid eller inte, eller kan det vara så att vissa delar av tiles är solida, men andra inte (till exempel en sluttning eller ett gupp)?


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 19:07:39 - August Gustavsson

Hela tilen är alltid helt solid om den är det över huvud taget. Får hoppas att du orkar skriva inlägget sen :)


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 19:56:27 - Niklas Jansson

Okej, då gör du något sånt här (och du har fortfarande nytta av att skriva koden även om du sen vill ha halvsolida tiles).

Det beror lite på hur du styr gubben. Jag förutsätter att du har två variabler xstep och ystep, som beskriver hur långt gubben kommer röra sig nästa steg. Har du inte det får du modifiera proceduren så att det stämmer med din metod.

Om du tänker dig att du vill kolla om gubben går från vänster mot höger och du vill veta om han håller på att slå emot en tile. Vi kallar den vänstra delen av den tilen för xtile.
Då blir det krock om följande gäller:

if(x<xtile && x+xstep>xtile)
//en vettig metod för att undvika studsen är att sätta
xstep=xtile-x

Då kommer gubben gå hela vägen fram, men inte längre. Du får även anpassa för gubbens bredd, och göra kollen åt andra hållet (step<0). Helt analogt blir det för y-ledden.

Sen kanske du vill att han ska kunna gå ett litet steg utan att hoppa, har inte tid nu, men återkom så ska vi nog klura ut det med.


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 22:55:44 - Raderat konto

Läste din post, jag ska försöka med det där.


Tänkte jag kunde berätta lite kort om spel loopen ifall du har nån kommentar på den:

<code>
while(lite stuff)
{
//kolla vilka knappar som är nedtryckta

//uppdatera spelaren
//rita ut spelaren

//kolla efter collisioner mellan mapen o spelaren

}
</code>

Jag har en performance timer som mäter hur långt tid en loop tar varje gång, för att sedan när jag ska flytta spelaren (bara om han trycker ner en pil tangent) skriver jag ungefär:
Mario.X += Loopduration * 0.2;
Loopduration är i ms. Detta resulterar i en hastighet på 200px/sec

Just nu flyttar jag spelaren direkt när man trycker på en piltangent (först i loopen). collisionen kollar jag först efter (sist i loopen), skulle den då kollidera hindrar jag spelaren från att röra sig _nästa_ gång. Men det funkar inte så bra, så jag behöver som sagt hjälp med detta, jag kan lätt ändra om allting bara så du vet.(om det skulle vara bättre)

Jag antar att (Loopduration * 0.2) är den där xstep variabeln du snacka om?


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 22:56:03 - Raderat konto

Läste din post, jag ska försöka med det där.


Tänkte jag kunde berätta lite kort om spel loopen ifall du har nån kommentar på den:

<code>
while(lite stuff)
{
//kolla vilka knappar som är nedtryckta

//uppdatera spelaren
//rita ut spelaren

//kolla efter collisioner mellan mapen o spelaren

}
</code>

Jag har en performance timer som mäter hur långt tid en loop tar varje gång, för att sedan när jag ska flytta spelaren (bara om han trycker ner en pil tangent) skriver jag ungefär:
Mario.X += Loopduration * 0.2;
Loopduration är i ms. Detta resulterar i en hastighet på 200px/sec

Just nu flyttar jag spelaren direkt när man trycker på en piltangent (först i loopen). collisionen kollar jag först efter (sist i loopen), skulle den då kollidera hindrar jag spelaren från att röra sig _nästa_ gång. Men det funkar inte så bra, så jag behöver som sagt hjälp med detta, jag kan lätt ändra om allting bara så du vet.(om det skulle vara bättre)

Jag antar att (Loopduration * 0.2) är den där xstep variabeln du snacka om?


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 22:57:06 - Raderat konto

Läste din post. Jag ska försöka med det där.

Har lite frågor + jag tänkte jag kunde berätta lite kort om spel loopen ifall du har nån kommentar på den:

<code>
while(lite stuff)
{
//kolla vilka knappar som är nedtryckta

//uppdatera spelaren
//rita ut spelaren

//kolla efter collisioner mellan mapen o spelaren

}
</code>

Jag har en performance timer som mäter hur långt tid en loop tar varje gång, för att sedan när jag ska flytta spelaren (bara om han trycker ner en pil tangent) skriver jag ungefär:
Mario.X += Loopduration * 0.2;
Loopduration är i ms. Detta resulterar i en hastighet på 200px/sec

Just nu flyttar jag spelaren direkt när man trycker på en piltangent (först i loopen). collisionen kollar jag först efter (sist i loopen), skulle den då kollidera hindrar jag spelaren från att röra sig _nästa_ gång. Men det funkar inte så bra, så jag behöver som sagt hjälp med detta, jag kan lätt ändra om allting bara så du vet.(om det skulle vara bättre)

Jag antar att (Loopduration * 0.2) är den där xstep variabeln du snacka om?


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 22:58:04 - Raderat konto

Läste din post. Jag ska försöka med det där.

Har lite frågor + jag tänkte jag kunde berätta lite kort om spel loopen ifall du har nån kommentar på den:

<code>
while(lite stuff)
{
//kolla vilka knappar som är nedtryckta

//uppdatera spelaren
//rita ut spelaren

//kolla efter collisioner mellan mapen o spelaren

}
</code>

Jag har en performance timer som mäter hur långt tid en loop tar varje gång, för att sedan när jag ska flytta spelaren (bara om han trycker ner en pil tangent) skriver jag ungefär:
Mario.X += Loopduration * 0.2;
Loopduration är i ms. Detta resulterar i en hastighet på 200px/sec

Just nu flyttar jag spelaren direkt när man trycker på en piltangent (först i loopen). collisionen kollar jag först efter (sist i loopen), skulle den då kollidera hindrar jag spelaren från att röra sig _nästa_ gång. Men det funkar inte så bra, så jag behöver som sagt hjälp med detta, jag kan lätt ändra om allting bara så du vet.(om det skulle vara bättre)

Jag antar att (Loopduration * 0.2) är den där xstep variabeln du snacka om?


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-24 23:00:19 - August Gustavsson

Läste din post. Jag ska försöka med det där.

Har lite frågor + jag tänkte jag kunde berätta lite kort om spel loopen ifall du har nån kommentar på den:

<code>
while(lite stuff)
{
//kolla vilka knappar som är nedtryckta

//rita ut banan

//uppdatera spelaren
//rita ut spelaren

//kolla efter collisioner mellan mapen o spelaren

}
</code>

Jag har en performance timer som mäter hur långt tid en loop tar varje gång, för att sedan när jag ska flytta spelaren (bara om han trycker ner en pil tangent) skriver jag ungefär:
Mario.X += Loopduration * 0.2;
Loopduration är i ms. Detta resulterar i en hastighet på 200px/sec

Just nu flyttar jag spelaren direkt när man trycker på en piltangent (först i loopen). collisionen kollar jag först efter (sist i loopen), skulle den då kollidera hindrar jag spelaren från att röra sig _nästa_ gång. Men det funkar inte så bra, så jag behöver som sagt hjälp med detta, jag kan lätt ändra om allting bara så du vet.(om det skulle vara bättre)

Jag antar att (Loopduration * 0.2) är den där xstep variabeln du snacka om?


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-25 00:52:46 - August Gustavsson

Skulle bara säga att jag löste det sen. Visade sig att det inte var så svårt :/. Gjorde som du sa att man kollar kollisioner innan man flyttar spelaren. Det blev mycket lättare då. :) Tidigare använde jag rektanglar och kollade ifall dom skär in i varandra ( finns en funktion för det, intersectswith() ) för att sedan hindra spelaren att flytta på sig nästa gång. Som sagt det fungerade jättebra innan jag började använda tiles.

Nu löste jag det som så att jag gjorde en ny rektangel av spelaren som hade den position som spelaren skulle ha OM man flyttade på honom. Då är det bara att kolla om den nya rektangeln skär någon tiles rektangel, gör den det flyttar jag spelaren precis bredvid tilen, om inte flyttar jag spelaren hela biten som det var meningen från början.

Tack så mycket för vägledningen! Gjorde att jag fick grepp om situationen!


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-25 14:11:22 - Niklas Jansson

Kul att det funkade!
Lägg gärna upp programmet på filarean sen. =)


Svara

Sv: Collision detection mellan banan och spelaren

Postades av 2004-04-25 15:24:05 - August Gustavsson

Kommer jag säkerligen att göra, när det är lite mer färdigt ; )


Svara

Nyligen

  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 864
27 962
271 767
424
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies