Autor Zpráva
Max
Profil
Zkouším vytvořit hru závody aut,ale mám takový menší problém.Chtěl jsem vytvořit ohraničení jízdní trati tak,aby se od něj auto odrazilo.Podařilo se mi to jen,když to ohraničení mělo přesný tvar (objekt tvaru čtverce,kruhu apod),což je poměrně nevýhodné,protože bych tu trať musel složit z kousků.A tak jsem to chtěl udělat z jednoho objektu,do kterého bych "vyřízl" tvar té trati.(dutý objekt)Pak jsem z toho udělal movie klip a tomu autu nadefinoval:
}
if (this.hitTest(_root.ohranicenitrati) & speed>0) {
speed -=10;
}
Jenom že ten objekt,do něhož je vyřízlá ta trať, je brán jako jeden objekt i s tou "dírou" v něm.A tak bych potřeboval poradit,jak to udělat,aby v tom objektu nebyla zahrnuta plocha toho vyříznutého otvoru.Jsem opravdu začátečník a tak je můj dotaz možná triviální,nicméně za odpověď předem děkuji...
Hanz
Profil
Max
}
if (this.hitTest(_root.ohranicenitrati._x,_root.ohranicenitrati._y, true) & speed>0) {
speed -=10;
}

Ale nejsem si jist.
Max
Profil
Díky za radu,ale tenhle skript bohužel funguje tak,že se ten objekt (auto) odráží od prostředka toho movie klipu a né od jeho "stěn"...
Hanz
Profil
Max
Tak to zkus ještě takto:
}

if (_root.ohranicenitrati.hitTest(this._x,this._y, true) & speed>0) {
speed -=10;
}
Max
Profil
Díky moc,myslim,že tohle bude s malou úpravou to ono...:)
Max
Profil
Ikdyž to má přecijen malý háček.Vyřešilo to tu "děravost" toho objektu,co představuje to ohraničení,ale zas prozměnu se to auto odrazí svým středem.To znamená,že svou půlkou vjede do toho ohraničení a pak teprve se odrazí.Tak že problém s odrážením od středu stále zůstává...
Hanz
Profil
Max
Tak to zkus ještě takhle:
_root.ohranicenitrati.hitTest(this, true);

Ale asi to nepůjde.
Max
Profil
Tak to jsem taky už zkoušel,ale bohužel to taky nejde...
Sitnarf
Profil
Ten předešlý příklad nefunguje, protože pokud nepužiješ ja parametry souřadnice(_x,_y) místo MovieClipu, tak Flash počítá kolizi pouze s bounding boxem okruhu (takový ten rámeček kolem movieClipu). Jeden ze způsobů:

if (_root.okruh.hitTest(this._x+_width/2, this._y+_height/2, true)) {
speed= -speed;
}

V tomto případě se počítá kolize při jíždě dopředu, při zpátečce jednoduše vyměníš znaménka.
Billy Bob Bean
Profil *
Nej jednodušší je si trať rozdělit na vnitřní a vnější část, potom stačí napsat:
if (_root.vnitrni.hitTest(this)) {
rychlost *=0.7;
_x -=2;
}
if (_root.vnejsi.hitTest(this)) {
_rychlost *=0.7;
_x +=2;
}
Tohle zaručeně fungovat bude...
Max
Profil
Tak jsem zkoušel ten skript:

if (_root.okruh.hitTest(this._x+_width/2, this._y+_height/2, true)) {
speed= -speed;
}

celkem by to fungovalo,ale objevuje se tam malý problém.Funguje to v případě,že to ohraničení má přesný tvar.Například když jsem vymezil hrací plochu obdelníkem představujícím ty hranice,do kterého jsem vyřízl obdelníkový otvor,v němž se to auto pohybuje...

Problém nastal,když jsem v tom otvoru vytvořil další omezující překážky.Jednak některé z nich byly zřejmě moc úzké,a tak jimi to auto projelo, ale to bych snad nějak vyřešil, ale závažnější věc nastala,když to auto narazilo na roh některé z těch překážek,které se nacházely v tom vymezeném prostoru.Auto tím projelo a začalo se chovat,jako by ta bariera byla tím prostorem,kde se má pohybovat...Nevím,čím to je,že to nebere všechny hrany těch barier...

Pro představu o té trati,vypadá asi takto:

-----------------------------------------
- -
- ---------------------- -
- - -
- - ----------------------
- - -
- -------------------- -
- -
-----------------------------------------

ty čáry představují bariery,od nichž se auto odráží.S tím rámcem kolem není problém,ten funguje,ale ty příčky uvnitř právě dělají výše zmíněný problém...
Max
Profil
Aha,pokus o nástin se nepovedl.Prostě to uvnitř tvoří trať přibližně ve tvaru písmene "S"...
Timy
Profil
zkus se podívat na tohle http://www.flashland.sk/flash.php?id=157&fileswf=t1.swf (zdroják), třeba to pomůže
4JOKE
Profil *
...presne takyto problem mam aj ja....
...jedine funkcne uzitocne co som v tejto teme nasiel je link od Timyho...

...pozeral som si zdrojovy kod tej animacie, lenze je tam toho tak vela ze vobec tomu nexapem, ono sa tam aj vypocitava ako sa ma ta lopta odrazit a to ja nepotrebujem, stacilo by mi len ako je ta kolizia spravena. Mohol by mi to niekto vysvetlit? alebo na akom principe to pracuje???

Moc dik.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0