我在吃某个物体时制作一个具有角色模式的游戏。有点像pacman,当你吃更大的球,让你变成蓝色,让你在短时间内吃鬼。
我的游戏有一种模式,当玩家吃某个物体时,他们可以在10秒钟内尝试吃掉他们的对手。当吃掉物体时,我已经能够躲闪地让玩家改变形态,从舞台上消失的物体,计时器开始和曾经吃掉其他玩家从舞台上移除和一些更多的互动(不擅长as3)。有些我怎么做的,所以玩家可以吃对象,然后打开模式,但不能吃他们的对手,它不会关闭或直接吃他们的对手,改变形式,打开计时器,但不要关闭它?
任何有关我做错的帮助都将不胜感激!代码
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 :(得分:0)
当玩家1击中玩家2(或吃)时,你可能没有停止你的计时器。 当你停止计时器时,不要忘记重置定时器计数器等计时器项目。
如果(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
}
希望这会有所帮助:)