Napisano 17 Listopad 200816 l Witam.Jestem w trakcie robienia gry ,ale jest kilka błędów.Jednym z nich jest gdy sie podskoczy przyciskiem Z to można ruszać strzałkami w lewo i w prawo ,a ja chciałbym gdy przycisk Z jest wciśnięty to żeby wtedy przyciski lewo i prawo były wyłączone.A drugim błędem jest gdy się podejdzie do ściany to postać zostaje przekierowana wyżej zobaczcie sami: http://evoteam.unl.pl/Gra/FreeRun.html Tutaj jest kod postaci: onClipEvent(load) { grav = 10; speed = 1; jumpHeight = 12; scale = _xscale; slowfall = 0; }onClipEvent(enterFrame) { ++grav; _y = _y + grav; while (_root.ground.hitTest(_x, _y, true)) { --_y; grav = 0; } if (Key.isDown(39)) { _x = _x + speed; _xscale = scale; if (_root.ground.hitTest(_x, _y + 3, true)) { this.gotoAndStop(2); } else { this.gotoAndStop(3); } } else { if (Key.isDown(37)) { _x = _x - speed; _xscale = 0 - scale; if (_root.ground.hitTest(_x, _y + 3, true)) { this.gotoAndStop(2); } else { this.gotoAndStop(3); } } else { if (_root.ground.hitTest(_x, _y + 3, true) && !Key.isDown(79)) { this.gotoAndStop(1); } } } if (Key.isDown(79) && !Key.isDown(37) && !Key.isDown(40) && !Key.isDown(39) && !Key.isDown(38) && !Key.isDown(32)) { this.gotoAndStop(3); } if (Key.isDown(Key.SPACE) && _root.ground.hitTest(_x, _y + 3, true)) { grav = 0 - jumpHeight; _y = _y - 4; this.gotoAndStop(3); } if (Key.isDown(90) && _root.ground.hitTest(_x, _y + 3, true)) { fight=true grav = 0 - jumpHeight; _y = _y - 4; this.gotoAndStop(5); } if (Key.isDown(67) && _root.ground.hitTest(_x, _y + 3, true)) { fight=true grav = 0 - jumpHeight; _y = _y - 4; this.gotoAndStop(6); } if (_root.ground.hitTest(_x + _width / 2, _y - _height / 2, true) || _root.ground.hitTest(_x + _width / 2, _y - _height / 6 * 4, true)) { _x = _x - speed; } if (_root.ground.hitTest(_x - _width / 2, _y - _height / 2, true) || _root.ground.hitTest(_x - _width / 2, _y - _height / 6 * 4, true)) { _x = _x + speed; } if (_root.ground.hitTest(_x, _y - _height, true)) { grav = 2; } } A tutaj kod tła : onClipEvent (enterFrame) { if(Key.isDown(Key.RIGHT)) { this._x=_x-10; } } onClipEvent (enterFrame) { if(Key.isDown(Key.LEFT)) { this._x=_x+10; } } Dla tego kto się pozbędzie tych błędów nagroda,konto premium na rapidshare.com
Napisano 18 Listopad 200816 l Heh, jakbyś komentowal swój kod to pewnie byłoby latwiej. Zwlaszcza dla kogos kto nie programuje we flashu. :) a) zablokowanie "strzalek" przy skoku: do kodu odpowiadajacego za poruszanie w lewo i w prawo dodaj sprawdzanie warunku na wcisniety klawisz Z a potem go zaneguj. Nie wiem jak to we flashu wygląda (!Key.isDown(90), NOT Key.isDown(90), czy Key.isDown(90)==false) b) To juz chyba trudniejsze. Na 1-szy rzut oka widac 2 rozwiazania. 1- budynki maja conajmniej 2 strefy kolizji: sciany(podstawa budynku) oraz dach(plaski pasek na gorze). Przy kolizji z dachem postac dziala jak teraz a przy kolizji ze sciana stoi w miejscu. 2- mozesz liczyc przyrosty polozenia w czasie. Mozna to skomplikowac ale chyba najlatwiej to zpamietywac polozenie y postaci i w kolejnej jednostce czasu sprawdzac jego zmiane [ dY=Y(t=t0)-Y(t=t0+dt) ]. Jesli zmiana jest duza znaczy ze postac sie 'teleportowala' wyzej i należy ja cofnąć do poprzedniej pozycji. Zmieniajac prog akceptowalnego przyrostu dY mozesz decydowac na jak wysokie przeszkody ludek beddzie mogl wbiec bez skakania a na jakie nie. Podkreslam, ze nie jestem programistą, a napewno nie AS2/3 i nie wiem czy to bedzie dzialac. Nie bede Ci kodu poprawiał. Kombinuj. pozdr.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto