我是一个完整的团结新手。我想制作一个简单的场景,你有三个生命,如果你碰到一个立方体就会失去生命。这是我的剧本:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Lives : MonoBehaviour {
public Transform player;
public static int lives;
public Image live1;
public Image live2;
public Image live3;
// Use this for initialization
void Start () {
lives = 3;
live1.enabled = true;
live2.enabled = true;
live3.enabled = true;
}
void Update () {
DisplayOfHearts();
}
public static void Damage() {
lives -= 1;
}
public void OnCollisionEnter(Collision col) {
if (col.gameObject.tag == "cube") {
Lives.Damage();
}
}
public void DisplayOfHearts() {
if (lives == 2) {
live3.enabled = false;
}
else if (lives == 1) {
live2.enabled = false;
}
else if (lives == 0) {
live1.enabled = false;
}
}
}
发生的事情是玩家无法穿过立方体,但生命数量保持不变。我有什么遗失的吗?
答案 0 :(得分:1)
问题是您已将脚本附加到错误的游戏对象。脚本和对撞机必须连接到同一个游戏对象。
MonoBehaviour脚本中的Unity方法(例如OnEnable,Update,FixedUpdate,Awake,Start,OnTriggerEnter,OnCollisionStay等)仅适用于附加脚本的游戏对象。
如果您将脚本附加到其他游戏对象,请不要期望其中任何一个可以正常工作。 Update
仅在 游戏对象处于活动状态时有效。 OnCollisionEnter
仅在直接连接到该游戏对象的对撞机上发生碰撞时有效。 (当孩子有对撞机而不是连接脚本的实际游戏对象时,它甚至不起作用)