Skocz do zawartości

Featured Replies

Napisano

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 icon_smile.gif

  • Odpowiedzi 2
  • Wyświetleń 865
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności