2015-11-08 3 views
0

Im делает игру, которая имеет характерный режим, когда она ест определенный объект. Вид, как в pacman, когда вы едите большой шар, который превращает вас в синий цвет, и позволяет вам есть призрак на короткий период времени.ActionScript 3, создающий игровой режим

В моей игре есть режим, когда игрок ест определенный объект, он может попробовать и съесть своего противника за 10 секунд. Ive смог уклониться от того, чтобы игрок изменил форму при еде объекта, объекта, исчезающего со сцены, таймера, начинающегося и однажды съеденного другого игрока, удаляемого со сцены и еще нескольких взаимодействий (не хорошо в as3). Некоторые, как я сделал это, чтобы игрок мог съесть объект, а затем включить режим, но не сможет съесть их оппонент, и он не выключит ИЛИ сразу съешьте своего противника, измените форму и включите таймер, но не выключите его ?

Любая помощь с тем, что ive сделало неправильно, будет очень признателен! код ниже

package { 

import flash.display.MovieClip; 
import flash.events.*; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 

public class main extends MovieClip 
{ 
    public var playerName:int; 
    public var playerState:Number = 1; 

    var player1; 
    var player2; 
    var theZombieBall; 

    public var zombietimer:Timer = new Timer (1000,10); 


    public function main() { 
     // constructor code 
     //defines player and zombie mode 
     var playerNumber:int =1 
     this.playerName = playerNumber; 
     this.gotoAndStop(playerState); 

     player1 = new player(50,384, 1); 
     player2 = new player(944,384,2); 

     stage.addChild(player1); 
     stage.addChild(player2); 

     stage.addEventListener(Event.ENTER_FRAME, checkForCollision); 

     zombietimer.addEventListener(TimerEvent.TIMER,timerHandler); 
    } 

public function timerHandler(event:TimerEvent):void 
{ 
    timertext.text = 11- zombietimer.currentCount+""; 

    if (zombietimer.currentCount <1){ 
     //player2.gotoAndStop (1); 
      player1.playerState = 1; 

      player1.gotoAndStop (2); 
    } 

} 
    //public function addBall 
    public function checkForCollision(e:Event): void 
    {   
     //this function checks to see if theZombieBall has collided with a player 
     if(theZombieBall.hitTestObject(player1) || player1.hitTestObject(player2)) 
     { 

      //removes thebadball from the stage 
      trace("a player has eaten the zombie ball"); 
      stage.removeChild(theZombieBall); 
      // change player to zombieplayer 
      if (player1.playerState==1) 
      { 
      player1.playerState = 2; 
      } 
      else 
      { 
      player1.playerState = 1; 
      } 
      player1.gotoAndStop (2); 

      //makes player larger 
      player1.width = player1.width *2; 
      player1.height = player1.height * 2; 

      zombietimer.start(); 
     } 

     //this function checks to see if theZombieBall has collided with a player 
     if(theZombieBall.hitTestObject(player2)) 
     { 

      //removes thebadball from the stage 
      trace("a player has eaten the zombie ball"); 
      stage.removeChild(theZombieBall); 
      // change player to zombieplayer 
      if (player2.playerState==1) 
      { 
      player2.playerState = 2; 
      } 
      else 
      { 
      player2.playerState = 1; 
      } 
      player2.gotoAndStop (2); 

      //makes player larger 
      player2.width = player2.width *2; 
      player2.height = player2.height * 2; 

      zombietimer.start(); 
     } 

     //this function checks to see if player in zombie mode has collided with a normal player 
     if(player1.hitTestObject(player2)) 
     { 

      //removes player1 from stage from the stage 
      trace("a player has eaten another player"); 
      stage.removeChild(player1); 
      // change player to normal player 
      if (player2.playerState==2) 
      { 
      player2.playerState = 1; 
      } 
      else 
      { 
      player2.playerState = 2; 
      } 
      player2.gotoAndStop (1); 

      //makes player larger 
      player2.width = player2.width *2; 
      player2.height = player2.height * 2; 

      //removes timer from stage 
      stage.removeChild(timertext); 
     } 

     } 



    } 


    } 

ответ

0

Возможно, вы не остановили таймер ур, когда игрок 1 попал в игрока2 (или съел). Когда вы останавливаете таймер DONT, забудьте о таких вещах таймера, как счетчик таймера и т. Д.

если (player1.hitTestObject (player2)) {

 //removes player1 from stage from the stage 
     trace("a player has eaten another player"); 
     stage.removeChild(player1); 
     // change player to normal player 
     if (player2.playerState==2) 
     { 
     player2.playerState = 1; 
     } 
     else 
     { 
     player2.playerState = 2; 
     } 
     player2.gotoAndStop (1); 

     //makes player larger 
     player2.width = player2.width *2; 
     player2.height = player2.height * 2; 

     //removes timer from stage 
     stage.removeChild(timertext); 
     zombietimer.start(); 
     ///also reset zombietimer items 


    } 

Надеется, что это поможет :)

Смежные вопросы