2013-05-15 37 views
0

我正在编程赛车游戏。 你可以破坏你的对手,我想计算你破坏的敌人。 我这样做是这样:在Unity3D中算死死敌

if(Wrecked){ 
    Smoke.Emit(); 
    EngineTorque = 0; 
    PlayerCar_Script.EnemyWrecked += 1; 
} 

我想你可以看到我的问题。它不会只计算1它会计数无穷无尽...... 我该如何解决这个问题?我也试过SendMessage函数,但在同一个问题结束:/

+0

我从你在'Update'或'FixedUpdate'方法运行上面的代码,你的问题的猜测? –

回答

2

它不会只算1涨它就会算无尽

这听起来像你重复运行上面的代码,但不会在每次运行之间将PlayerCar_Script.EnemyWrecked设回0。我猜你在汽车的monobehavior.update()函数中有这个。相反,只有当你从没有被击毁到破坏时才会增加EnemyWrecked。

为每辆可摧毁的汽车使用一个变量,以确定它是否在上次检查时被破坏。

bool wasWreckedLastFrame = false; 

,然后改变你上面的代码段这样的:

if(Wrecked && wasWreckedLastFrame==false){ 
    wasWreckedLastFrame = true; 
    Smoke.Emit(); 
    EngineTorque = 0; 
    PlayerCar_Script.EnemyWrecked += 1; 
}