我的硬币系统的工作方式很简单。
我的问题:
这只会偶尔发生,但有时硬币系统会拒绝工作,特别是在比赛开始时或者如果玩家有大量的水果,即300个水果。例如,如果玩家拥有大约300个水果并且敌人从玩家那里获得大约200个水果(意味着玩家将有100个水果重新发送),那么如果玩家刺伤了敌人,玩家将只收到大约(例如)25水果回来而不是最初的200 +奖金(例如)25。如前所述,这只是偶尔发生 - 有时比平常更多,但我仍然希望确保它的工作准确和顺利。我试过调试它,但我仍然坚持为什么它不能正常工作。任何人都可以帮我修改我的代码或给我一个更好的解决方案,我如何能够建立一个更好的硬币系统。谢谢!
敌人盗窃剧本:
public static int scoreValue;
void Start () {
scoreValue = 0;
}
void Update () {
Debug.Log ("ScoreValue: " + scoreValue);
}
void OnTriggerEnter2D(Collider2D col)
{
if (col.tag == "Farm") {
collidedwithFarm = true;
scoreValue = Random.Range (1, GameController.Fruit);
Debug.Log ("Enemy takes: " + scoreValue);
GameController.Fruit-= scoreValue;
//Wallet += scoreValue;
if (GameController.Fruit<= 0) {
GameController.Fruit = 0;
}
}
}
敌人的剧本:
public int randomValue;
public int wallet;
public bool collidedwithFarm = false;
// Use this for initialization
void Start () {
wallet = 0;
collidedwithFarm = false;
randomValue = Random.Range (1, 101);
}
void OnTriggerEnter2D(Collider2D col)
{
if (col.tag == "playerKnife") {
if (collidedwithFarm == false) {
text.text = " " + randomValue;
Debug.Log ("NOT COLLISION");
GameController.Fruit+= randomValue;
}
else if (collidedwithFarm == true) {
Debug.Log ("COLLISION");
GameController.Fruit+= EnemyTheft.scoreValue+ randomValue;
Debug.Log("Player gets back: " + EnemyTheft.scoreValue);
wallet += EnemyTheft.scoreValue + randomValue;
text.text = " " + wallet;
Debug.Log ("In total: " + wallet);
}
}
}
硬币脚本:
public Text FruitText;
public static int Fruit = 10;
void Start()
{
SetFruitText ();
Fruit = 10;
}
void SetFruitText ()
{
FruitText.text = "Fruits: " + Fruit.ToString();
}
答案 0 :(得分:0)
你不需要
public bool collidedwithFarm = false;
删除它,然后在 EnemyTheft.cs 中使用此代码:
void OnTriggerEnter2D(Collider2D col)
{
if (col.tag == "Farm")
{
scoreValue = Random.Range (1, GameController.Fruit);
GameController.Fruit-= scoreValue;
}
}
在 Enemy.cs :
void OnTriggerEnter2D(Collider2D col)
{
if (col.tag == "playerKnife")
{
int payBack = randomValue + EnemyTheft.coinsStolen;
GameController.Fruit += payBack;
wallet -= payBack;
}
}
希望这有帮助。