een gebruiker blokkeren met de muis

Status
Niet open voor verdere reacties.

ido435

Gebruiker
Lid geworden
10 nov 2010
Berichten
674
Hi

Ik ben zelf aan het na denken geweest om het te proberen een 2d game te maken maar nu zit ik dus met het probleem
Dat het poppetje overal door heen kan

A.u.b wel graag een voorbeeld er


Alvast bedankt
 
Het is een concept genaamd "collision testing" of "hit testing". Er zijn een aantal mogelijkheden.

De meest eenvoudige is een imaginair vierkant rond je poppetje. Vervolgens test je of dit vierkant in aanraking komt met een object. Bij een egale achtergrond kun je testen of je een pixel van een andere kleur raakt. Als je wereld is opgebouwd uit andere blokken kun je testen of je een ander blok doorkruist.

een supereenvoudige code kun je hier vinden: http://en.wikipedia.org/wiki/Hit-testing Maar een specifieke oplossing is een beetje afhankelijk van hoe je spel is opgezet.
 
wacht ik kan je zo snel ff niet volgen
ff iets meer uitleg a.u.b

( het is een soort van mario game)
 
Het principe is dat jij weet waar alles is. met die kennis moet je dus zelf bepalen wanneer iets iets anders raakt.

In het geval van een platform spel zijn dat dingen zoals de vloer, de onderkant en bovenkant van andere platformen en vijanden. Deze worden door jezelf neergezet dus je kunt zelf ook bepalen wanneer je speler 1 van deze dingen raakt. Vooral in de oudere mario's kun je dit goed zien, waar alles op het scherm is opgebouwd uit blokken van 40x40 pixels (misschien ook 32x32 weet het niet meer precies)

Mario zelf is 2 blokken hoog. vervolgens kijk je of "mario" een ander blok raakt door de rechthoek rond mario (40x80) te vergelijken met de positie van andere blokken. als de blokken kruisen onderneem je actie. een muur/vloer blok stopt de beweging, een monster blok verlies je een leven (tenzij je, in het geval van mario, van boven komt.).
 
ja zo iets ja maar hoe je blokken laad bewegen dat weet ik
maar hoe krijg je een actie als poppetje iets aanraakt?
 
kijken of de toekomstige positie van je poppetje iets raakt door de posities te vergelijken.

afhankelijk van het perspectief kan dat bij het tekenen van de achtergrond (poppetje blijft altijd gecentreerd, achtergrond beweegt) of de beweging van het poppetje (achtergrond is statisch, poppetje beweegt)

poppetje (coordinaat 3,2) is gecentreerd en valt naar aarde:

Code:
.....
..*..
.....
.....
=====


.....
..*..
.....
=====
/////


.....
..*..
=====
/////
/////

Bij het volgende plaatje teken je de "grond" door het poppetje heen: je gaat namelijk aarde tekenen op positie 3,2. je weet dat er dan iets van de achtergrond kruist met je poppetje. je stopt dan het vallen door je "Y" beweging te stoppen.
 
Wat snap je niet (zie ook post #8) ?
Wat heb je al? Wat lukt er niet?

:)
 
Wat snap je niet (zie ook post #8) ?
Wat heb je al? Wat lukt er niet?

:)
wat lukt mij
dingen laten bewegen met toetsen en timers
wat lukt mij niet
de reactie als het blok iets aan raakt
 
W5Egy.png

p7x0W.png


Met de volgende controle:

[CPP] Private Sub check()
Dim obstakels() As Panel = {obst1, obst2, eind}
For Each item In obstakels
If ((item.Location.X + item.Size.Width >= joz1.Location.X) And _
(item.Location.X <= joz1.Location.X + joz1.Size.Width) And _
(item.Location.Y + item.Size.Height >= joz1.Location.Y) And _
(item.Location.Y <= joz1.Location.Y + joz1.Size.Height)) Then

If item.Name = "eind" Then MsgBox("Gefeliciteerd!", 64 + 4096, Me.Text) Else _
MsgBox("Game Over!", 48 + 4096, Me.Text)
Me.Close()
End If
Next[/CPP]

Download hier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan