如何设置一个计数器来产生通过某一点的敌人?

时间:2015-05-08 00:58:25

标签: c# unity3d scripting 2d unityscript

我正在制作一个团结的游戏,其中有敌人在左方向水平产生。我为敌人的预制件写了一段代码,当它通过一个位置时,计数器会增加一个。如果有5个敌人通过该点,将出现一个场景游戏。 当我运行场景时,计数不会增加!

这是我的代码:

using UnityEngine;
using System.Collections;

 public class GameOver : MonoBehaviour
 {
     public int count=0;

     public void update()
     {
         if (GameObject.Find("bunny").transform.position.x == -3.0f)
          {
             count = +1;
             if (count == 5)
             {
                 Application.LoadLevel ("gameOver");
             }
         }
     }

 }

这是敌人运动的代码:

using UnityEngine;
using System.Collections;

 public class EnemyMovement : MonoBehaviour {

     public float speed ;

     void Update () {

         transform.Translate(-Vector2.right*speed*(Time.deltaTime));

     }
 }

提前致谢

2 个答案:

答案 0 :(得分:0)

修改:

count = +1; =>  count++;

if (GameObject.Find("bunny").transform.position.x == -3.0f)

不推荐浮点比较。因此修改代码会更好。

if (((int)GameObject.Find("bunny").transform.position.x) == -3)

并将查找变量缓存为类中的成员变量,因为在场景中查找对象非常昂贵。

GameObject bunny = GameObject.Find("bunny");

答案 1 :(得分:0)

Jinbom Heo的回答是正确的,但我也想在这一行中指出:

if (GameObject.Find("bunny").transform.position.x == -3.0f)

有些时候,position.x不会完全等于3.0f。最好将其改为:

if (GameObject.Find("bunny").transform.position.x < -3.0f)

至于缓存部分,它看起来应该是这样的:

 public class GameOver : MonoBehaviour
 {
     public int count=0;
     GameObject bunny;

     void Start(){
         bunny = GameObject.Find("bunny");
     }

     public void update()
     {
         if (bunny.transform.position.x < -3.0f){
             // ...
         }
     }
 }