Ubrzanje i usporavanje
Sry na duplom postu, no ne mogu editirati stari, a jucer nisam imao net :(. Uglavnom evo nastavak. Kao sto sam obecao, ovaj put cemo obraditi ubrzanje i usporavanje lika. Pogledajte kod, a zatim objasnjenje:
Code:
onClipEvent (load) {
brzina = 1;
ubrzanje1 = 0;
ubrzanje2 = 0;
usporavanje = 0.9;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.UP)) {
ubrzanje2 -= brzina;
}
if (Key.isDown(Key.DOWN)) {
ubrzanje2 += brzina;
}
if (Key.isDown(Key.LEFT)) {
ubrzanje1 -= brzina;
}
if (Key.isDown(Key.RIGHT)) {
ubrzanje1 += brzina;
}
ubrzanje1 *= usporavanje;
ubrzanje2 *= usporavanje;
_x += ubrzanje1;
_y += ubrzanje2;
}
Kao sto vidite, odredio sam neke nove varijable. Takodjer sam smanjio brzinu s 5 na 1. Da je brzina ostala na 5 nas lik bi se prebrzo kretao. Takodjer, pogledajte
ubrzanje1 i
ubrzanje2. Oni su nula, iz razloga da se u pocetku nas lik ne mice. Te varijable se mjenjaju pritiskom na gumbe tipkovnice.
ubrzanje1 odradjuje x os, a
ubrzanje2 y os. Ovo nije nista komplicirano, cista matematika.
Skinite fla fajl, a za nekih 10 min. dolazi nastavak (ovaj put editiram

):
2.rar (Size: 3.73 KB / Downloads: 3)
Gravitacija
Zasto jabuka pada sa stabla? Gravitacija =). Pokusajmo to napraviti u flashu...
Code:
onClipEvent (load) {
brzina = 1;
ubrzanje1 = 0;
ubrzanje2 = 0;
usporavanje = 0.9;
gravitacija = 0.25;
ubrzgravitacije = 0.5;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.UP)) {
ubrzanje2 -= brzina*ubrzgravitacije;
}
if (Key.isDown(Key.DOWN)) {
ubrzanje2 += brzina*ubrzgravitacije;
}
if (Key.isDown(Key.LEFT)) {
ubrzanje1 -= brzina;
}
if (Key.isDown(Key.RIGHT)) {
ubrzanje1 += brzina;
}
ubrzanje1 *= usporavanje;
ubrzanje2 += gravitacija;
_x += ubrzanje1;
_y += ubrzanje2;
}
Nove varijable su
gravitacija i
ubrzgravitacije. Pogledajte dio koda za UP i DOWN tipke, te ubrzanje2. To su jedine promjene. Jednostavno, a ucinkovito. Sto nam sada fali? Nas lik se krece po praznome prostoru. Probajmo napraviti pod. Stize u sljedecih 10 minuta xD. Takodjer skinite fla fajl:
3.rar (Size: 4.35 KB / Downloads: 3)
Pod
Nacrtajte pod, najbolje jedan pravokutnik, te ga pretvorite u simbol. Simbolu dajte instance name
pod1. Moram napomenuti da je cijeli kod promjenjen, no ipak sam zadrzao neke osnove. Sada se igra pretvara u platformsku igru... Pogledajte kod:
Code:
onClipEvent (load) {
brzina = 5;
micanje = false;
skok = false;
gravitacija = 5;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.RIGHT)) {
micanje = "desno";
} else if (Key.isDown(Key.LEFT)) {
micanje = "lijevo";
} else {
micanje = false;
}
if (Key.isDown(Key.SPACE) && micanje == false && (this, hitTest(_root.pod1))) {
skok = true;
} else {
skok = false;
}
if (this, hitTest(_root.pod1)) {
_y = _root.pod._y-_root.pod._height/2;
} else {
_y += gravitacija;
skok = false;
micanje = false;
}
if (skok) {
_y -= 75;
skok = false;
micanje = false;
}
if (micanje == "desno") {
_x += brzina;
}
if (micanje == "lijevo") {
_x -= brzina;
}
}
Sada vam moram objasniti
hitTest funkciju. Ona se koristi da bismo provjerili dodiruju li se dva simbola ili stoji li neki simbol na nekoj poziciji. U nasem slucaju, ako se dodiruju igrac (
this) i pod (
pod1). Idemo polako sada objasniti cijeli kod...
Code:
if (Key.isDown(Key.RIGHT)) {
micanje = "desno";
} else if (Key.isDown(Key.LEFT)) {[quote][/quote][code]
micanje = "lijevo";
} else {
micanje = false;
}[/code]
Provjeravamo jeli stisnuta tipka right, left ili nista od navedenog.
Code:
if (Key.isDown(Key.SPACE) && micanje == false && (this, hitTest(_root.pod1))) {
skok = true;
} else {
skok = false;
}
Provjeravamo je li stisnuta tipka SPACE, te mice li se nas lik i dodirujemo li pod. Ako je tvrdnja istinita, onda je skok dozvoljen (
skok = true)
Code:
if (this, hitTest(_root.pod1)) {
_y = _root.pod._y-_root.pod._height/2;
} else {
_y += gravitacija;
skok = false;
micanje = false;
}
Provjeravamo dodiruje li igrac pod. Ako da, onda namjestamo y poziciju. Ako ne, onda pocinje padanje, te zabranjujemo micanje (desno, lijevo) i skakanje.
Code:
if (skok) {
_y -= 75;
skok = false;
micanje = false;
}
Ako je dopusteno skakanje, onda cemo staviti da je y os manja za 75 od trenutne. Takodjer zabranjujemo micanje i ponovno skakanje sve dok ne dodirnemo pod.
Code:
if (micanje == "desno") {
_x += brzina;
}
if (micanje == "lijevo") {
_x -= brzina;
}
Ako se micemo prema desno, onda x os povecavamo za 5 (to je vrijednost varijeble brzina), a u suprotnom smanjujemo x os za 5.
4.rar (Size: 4.97 KB / Downloads: 7)
Slobodno komentirajte, pitajte i sve ostalo =). Nadam se da sam vam pomogao. Sljedeci put cemo ovaj skok malo lijepse odraditi jer izgleda kao da se nas lik teleportira za 75 pixela prema gore

. Pozdrav.