我正在制作一个团结的游戏,其中有敌人在左方向水平产生。我为敌人的预制件写了一段代码,当它通过一个位置时,计数器会增加一个。如果有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));
}
}
提前致谢
答案 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){
// ...
}
}
}