[ Flash MX ] spinnetje over een grid laten lopen

Pagina: 1
Acties:

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 20-05 08:42

XangadiX

trepanatie is zóó kinderachtig

Topicstarter
een vriend van mij kwam met het volgende probleem:

op http://student-kmt.hku.nl/~mark18/
staat een grid en een spinnetje die de muis volgt, als je de spin over het bolletje met puntje linksbovenaan (links 6e van beneden) dan spint de spin een draadje. De bedoeling is dat je met die draadjes onderdelen koppelt die dan in het window te zien zijn (het wordt een portfolio) Nu is dat nog niet zo ingewikkeld, maar waarvan ik niet zo 1, 2, 3 zou weten hoe het moet is dat het spinnetje (volgt nu de muis) de muis alleen mag volgen terwijl hij over de lijntjes loopt.

Het is dus niet zo dat ie via de lijntjes de kortste route naar de muis moet kunnen vinden, maar als hij op een stuk staat dat boven/onder is mag hij alleen naar boven of onder lopen als de muis hoger of lager is en op een rechts/links stuk hetzelfde. Problemen doen zich dus voor met de hoeken ed.

Hoe kun je dit het beste oplossen?

Ik zit zelf aan een tile-based systeem te denken maar ik weet niet hoe ik dan de hoeken oplos. Misschien tiles bouwen met 'exit points' (immers ieder draad-hoekje heeft 2 connectors).

Iemand intelligente ideeen?

Stoer; Marduq


Verwijderd

"maar als hij op een stuk staat dat boven/onder is mag hij alleen naar boven of onder lopen als de muis hoger of lager is en op een rechts/links stuk hetzelfde"

Dit deel snap ik niet helemaal, zou je dit nog even kunnen toelichten met een afbeelding of wat meer tekst?

Verwijderd

Ik zal het ff toelichten (ik ben die vriend van XangadiX uit de eerste topic)

Als je naar www2.hku.nl/~mark18/afbeelding.jpg gaat zie je een plaatje van wat de spin moet gaan doen. De spin volgt nou nog over de gehele pagina de muis, hij moet alleen gebruik maken van de lijnen die er staan. Wanneer de spin zich bevindt zoals aangegeven op het voorbeeld, heeft hij 2 mogelijkheden, optie A en optie B, omdat de muis zich boven de spin bevindt kiest de spin voor optie A. En zodoende volgt hij het pad naar boven naar het volgende punt.

Hoop dat dit genoeg extra uitleg is...

Dj Miquel

  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
Ik denk dat je een movieclip moet maken met daarin het begaanbare pad en dan met een hittest of positiebepaling kijken of de 2 movieclips (spin en pad) overlappen.

Of juist tekenen waar hij niet mag komen, is misschien makkelijker (maar hetzelfde principe)

Human Bobby


Verwijderd

XangadiX schreef op 06 mei 2004 @ 18:33:
maar waarvan ik niet zo 1, 2, 3 zou weten hoe het moet is dat het spinnetje (volgt nu de muis) de muis alleen mag volgen terwijl hij over de lijntjes loopt.
Mijn gok:
"Collision detect" , zit ook veel in game flash dingen.

Verwijderd

Het probleem is niet de aansturing, maar het bepalen welke richting het spinnetje moet lopen. Ik zie dan ook niet in wat collision detection voor zin heeft. Welke colide wil je detecteren? :?

Ik ga hier morgen in de auto over nadenken... (hoef niet te rijden :Y) ) Het is volgens mij lastiger dan het lijkt...

[ Voor 25% gewijzigd door Verwijderd op 06-05-2004 22:09 ]


Verwijderd

Ik heb misschien een idee: Voronoi

Ga zo even een plaatje tekenen, als ik hem af heb, dan update ik deze post :Y)

Verwijderd

* Schop + uitleg

http://www.nextavenue.com/spin.jpg

Wat je op de afbeelding ziet is een schematische tekening van het web waarover de spin kan lopen. De rode stip moet de spin voorstellen. Vanuit dit punt kan de spin naar zowel punt A als naar punt B.
Waar de spin heen gaat is afhankelijk van waar de muis zich bevindt. We verdelen de kaart daarom volgens het naastebuur principe en krijg zo het Voronoi diagram van punten A en B (natuurlijk een rechte lijn, die de conflictlijn is; vandaar Voronoi :Y) )
Bevindt de muis zich in het groene gedeelte dan moet de spin naar punt A lopen. Bevindt de muis zich in het blauwe gedeelte dan moet de spin naar punt B lopen.

Stel dat de spin naar punt B loopt en daar eenmaal is aangekomen. Op dat moment kan de spin terug naar A of naar de zwarte stip rechts van B. Waar de spin heen gaat, hangt van de locatie van de muis. Opnieuw Voronoi diagram tekenen, kijken waar de muis is en bepalen welke kant de spin op moet lopen.

De kaart moet je dus beschrijven als punten in een plat vlak. Met simpele wiskundige formules kan je van twee punten de Voronoi lijn opstellen als een f(x) = ax + b functie.

Ik hoop dat het al wat helderder is geworden.

Was dit zo ongeveer de bedoeling of volg ik het nog niet helemaal? :)

Verwijderd

Okay leuk dat er nu al zoveel replys zijn gekomen....

Ik zat zelf te denken aan een lijn en dan idd door middel van mc.hittest te checken of de spin op de lijn is. Maar zoals Jorgen vertelt klinkt ook zeer de moeite waard. Maar er zit bij hem één probleempje (denk ik). Stel: je bevindt je met de muis bij het zwarte punt rechts van B dan beweegt de spin niet naar de muis, aangezien de formule niet opgaat. Dus aan dat idee zitten nog wat haken en ogen. Maar ik ga ermee aan de slag en wanneer ik er niet uitkom post ik gewoon weer een topic, allemaal bedankt en ik laat het jullie weten wanneer het af is (en hoe het af is)

Mark Gerritzen

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 20-05 08:42

XangadiX

trepanatie is zóó kinderachtig

Topicstarter
ik heb nog even zitten nalezen in de as-dictionary, en ik denk dat die hittest toch het makkelijkst is, alleen is die best zwaar op je processor, ik zal nog even in collision detection duiken vanmiddag.

offtopic:
Mark, je hoeft je naam niet onder een post te zetten hoor; we zien je username links ook wel ;)

Stoer; Marduq


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

De zoektermen die je nodig hebt:

- A* algorithm
- Pathfinding + Actionscript

plus extra tip omdat het regent en vrijdag is:

- A* algorithm and pathfinding resources
HTH :)

"You're only as good, as what you did last week."


Verwijderd

die laatste topic klinkt leuk, maar ik snap er eigenlijk zeer weinig van. Ga er toch even naar kijken, maar ik blijf bij het feit dat je het volgens mij ook kan doen door middel van hittest (en dan twee movieclips)...

Ik ga weer verder scripten, nog steeds zijn alle ideeen welkom....

anoniempje ;)

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 20-05 08:42

XangadiX

trepanatie is zóó kinderachtig

Topicstarter
owhen, het ding hoeft dus gen paths te finden, het hoeft alleen maar naar de muis te luisteren en gelimit te worden in een bepaalde richting. Moet het meteen weer ingewikkeld :p

- een verontruste ram

Stoer; Marduq


Verwijderd

beste mensen,

ik ben een stukje verder, heb het volgende script gebruikt......

-------------------------------------------------------------------------------
onClipEvent (enterFrame) {

if(_root._ymouse < _root.bal._y){

varAfstand = Math.atan2(_root.puntB._y - this._y, _root.puntB._x - this._x);
varGraden = Math.round((varAfstand*180/Math.PI));
_root.yVar = Math.round(_root.puntB._y - this._y);
_root.xVar = Math.round(_root.puntB._x - this._x);
_root.yvarYverplaats = Math.round( _root.yVar/20);
_root.xvarXverplaats = Math.round( _root.xVar/20);
this._y += _root.yvarYverplaats;
this._x += _root.xvarXverplaats;
this._rotation = varGraden+90;

} else if (_root._ymouse > _root.bal._y) {

varAfstand = Math.atan2(_root.puntC._y - this._y, _root.puntC._x - this._x);
varGraden = Math.round((varAfstand*180/Math.PI));
_root.yVar = Math.round(_root.puntC._y - this._y);
_root.xVar = Math.round(_root.puntC._x - this._x);
_root.yvarYverplaats = Math.round( _root.yVar/20);
_root.xvarXverplaats = Math.round( _root.xVar/20);
this._y += _root.yvarYverplaats;
this._x += _root.xvarXverplaats;
this._rotation = varGraden+90;

}
}
-----------------------------------------------------------------------------------------

de spin kijkt nu waar de muis zich bevindt en zodoende loopt hij naar punt A of naar punt B. Zitten nog een aantal foutjes in, maar het is een begin..

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 20-05 08:42

XangadiX

trepanatie is zóó kinderachtig

Topicstarter
* XangadiX mompelt iets over setInterval :X

kun je ook een swfje posten om te laten zien wat ie nu doet ?

[ Voor 44% gewijzigd door XangadiX op 08-05-2004 11:45 ]

Stoer; Marduq


Verwijderd

sorry had nog geen ftp programma,

op de volgende site staat een voorbeeld file:

www2.hku.nl/~mark18/probeer.swf

Verwijderd

"Stel: je bevindt je met de muis bij het zwarte punt rechts van B dan beweegt de spin niet naar de muis, aangezien de formule niet opgaat"

Ik snap niet helemaal wat je bedoeld... Waarom gaat de formule dan niet op?
Ik neem aan dat je bedoelt dat de spin dan nog steeds op de rode stip is. Als je muis zich dan rechts van B bevindt dan moet de spin wel eerst naar B lopen, lijkt mij :?

Misschien zie ik wel iets heel belangrijks over het hooft hoor...

Dat collision detection gedoe kan idd heel erg tijdrovend zijn, maar dat hoeft niet als je de formules dusdanig opstelt dat zo weinig mogelijk berekeningen gedaan worden. Dan nog lijkt het me niet erg snel worden in Flash...

/ Edit

Even kijken of ik een voorbeeldje in JS in elkaar kan krijgen, Flash is niet echt mijn dingetje :Y)

[ Voor 9% gewijzigd door Verwijderd op 08-05-2004 13:48 ]

Pagina: 1