【发布时间】:2018-09-15 02:23:40
【问题描述】:
我正在尝试在 Unity 上进行涂鸦跳跃,不同之处在于,当我降落在平台上时,会增加 10 分。但是,这仅适用于第一个平台。我从 0 开始,当我进入第一个平台时,我得到 10 分,但它停在那里。
我的代码有什么问题,为什么其他平台不会继续发生这种情况?
public class PlatformScript : MonoBehaviour {
public int currentScore;
public Text displayScore;
public float jumpForce = 10f;
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.relativeVelocity.y <= 0) {
Rigidbody2D rb = collision.collider.GetComponent<Rigidbody2D> ();
if (rb != null) {
Vector2 velocity = rb.velocity;
velocity.y = jumpForce;
rb.velocity = velocity;
}
Destroy (gameObject);
currentScore += 10;
Update ();
}
}
void Update()
{
displayScore.text = "Score: " + currentScore;
}
}
另外,这是我的关卡生成页面。平台随机生成:
public class LevelGenerator : MonoBehaviour {
public GameObject platformPrefab;
public int numberOfPlatforms = 200;
public float levelWidth = 3f;
public float minY = 1f;
public float maxY = 3.2f;
void Start () {
Vector3 spawnPosition = new Vector3 ();
for (int i = 0; i < numberOfPlatforms; i++)
{
spawnPosition.y += Random.Range (minY, maxY);
spawnPosition.x = Random.Range (-levelWidth, levelWidth);
Instantiate (platformPrefab, spawnPosition, Quaternion.identity);
}
}
}
您可能已经注意到,我对 Unity 非常陌生。
【问题讨论】:
-
不要手动调用
Update函数。此函数由 Unity 自动调用。 -
现在它完全不起作用了..点仍然保持在 0
-
你已经在当前脚本中声明了
currentScore,我很确定脚本是它所附加的每个游戏对象的一个实例,所以你基本上有很多@987654325的实例@ 那都是零。当您击中平台时,您添加 10,然后销毁平台。这意味着您只能获得 10 的得分值。我不知道统一,所以这可能不准确