Volledige versie bekijken : hittest met een schuine MC
peres
%Europe/Berlin %847 %2005, 21:21
Hey flashers,
Ik heb geprobeerd om in een spelletje in de linkerbovenhoek een grens geplaatst om een MC, die je kan besturen, tegen te houden. Met deze code:
if (hitTest(_root.hit5)==true) {
_x=_x+10;
_y=_y+10;
}
Alleen de grens (_root.hit5) is een diagonale balk. Als de MC hem raakt stuitert hij rechts naar onder terug (_x+10 en _y+10). De vorm van de balk staat diagonaal, maar hij wordt gezien als een vierkante MC die recht staat in plaats van diagonaal.
Kan iemand mij misschien helpen hoe ik dit tegen kan gaan?
ik kan het niet echt goed uitleggen in woorden daarom hier de .fla (http://members.chello.nl/r.stultiens/testgame.fla)
theFlashWizard
%Europe/Berlin %855 %2005, 21:31
dat komt omdat bij hittest altijd naar de boundingbox wordt gekeken..alsof hij er een vierkant achterzet ter groote van de mc..
het enigste wat je hieraan kan doen met een hittesrt is bijv meerdere mc's op een rand zetten.. en dus ook meerdere hittests..
peres
%Europe/Berlin %858 %2005, 21:35
zijn er hiervoor ook geen alternatieve manieren voor, zonder de hittest functie?
Dauntless
%Europe/Berlin %896 %2005, 22:30
Wiskunde :D (Gotta love math! :D)
peres
%Europe/Berlin %900 %2005, 22:36
op wat voor manier dan? :confused:
Pimm
%Europe/Berlin %904 %2005, 22:42
Nou, jij gaat een hitTest maken, niet met een object instancename maar bijvoorbeeldobject.hitTest(anderobject._x, anderobject.Y);(Ja, die's wel héél simpel).
Laiverd
%Europe/Berlin %907 %2005, 22:46
Als je wiskunde leuk vindt, vooral doen, maar je kunt natuurlijk ook de Shapeflag parameter gebruiken. Zet 'm op true, en alleen de vorm geeft een hit terug; zet 'm op false en hitTest gebruikt de boundingbx. Staat beschreven in de handleiding.
Simpele test? Maak een symbool met een circle of een onregelmatige vorm, geef 'm de instancename 'my_mc'. En gebruik deze code in het eerste frame van je movie
_root.onMouseMove = function(){
trace(my_mc.hitTest(_xmouse,_ymouse, true));
}John
Dauntless
%Europe/Berlin %907 %2005, 22:46
Nou, jij gaat een hitTest maken, niet met een object instancename maar bijvoorbeeldobject.hitTest(anderobject._x, anderobject.Y);(Ja, die's wel héél simpel).
Doe dan: object.hitTest(anderobject._x, anderobject.Y, true);
peres
%Europe/Berlin %922 %2005, 23:08
ik kan het niet echt snappen. ik heb de manier van Pimm en Dauntless geprobeerd maar daar werkt hij maar daarbij werkt hji maar in een klein deel in de MC, en de andere van Laiverd geeft hij een foutmelding aan. :(
peres
%Europe/Berlin %466 %2005, 12:11
ik heb nog eens nagezocht over die shapeflag. Hier (http://www.macromedia.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary534.html) in de as dictionary staat er iets over maar ik kom er helemaal niet uit. :( kan iemand mij misschien helpen hoe je die as toepast?
Lippuzz
%Europe/Berlin %462 %2006, 11:05
hittest(_root._x,_root._y,true)
de true staat ervoor dat de shapeslag aan staat. kheb het net via dit topic ook opgelost, werkt prima!!
Roenes
%Europe/Berlin %664 %2006, 15:57
Als je wiskunde leuk vindt, vooral doen, maar je kunt natuurlijk ook de Shapeflag parameter gebruiken. Zet 'm op true, en alleen de vorm geeft een hit terug; zet 'm op false en hitTest gebruikt de boundingbx. Staat beschreven in de handleiding.Ehmz, dit gaat niet helemaal op voor Peres zijn situatie. Hij heeft een mc met een schuine balk en een mc die hij bestuurt. De shapeFlag parameter gaat alleen op als je gaat hittesten met een x en y waarde:
shapeFlag: Boolean A Boolean value specifying whether to evaluate the entire shape of the specified instance (true), or just the bounding box (false). This parameter can be specified only if the hit area is identified by using x and y coordinate parameters.Voor zover ik weet is een shape-shape hitTest met onregelmatige vormen alleen mogelijk via wiskunde :) Zo niet, dan zou ik de situatie van Peres graag eens met hitTest zien. Want daar ben ik dan wel benieuwd naar :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.