生成的对象未触发Unity3D

本文关键字:Unity3D 对象 | 更新日期: 2023-09-27 18:20:05

我正在制作一款FPS游戏。它有可吸收的能量(果汁/能量),可以增加玩家的健康。现在我可以用一个立方体(只需使用一个立方体进行测试)来实现这一点。OnTriggerEnter就像一个符咒,它增加了玩家的健康,并保持了健康栏。但是,当我实例化它时,派生的多维数据集的触发器不起作用。

我在下面添加了我的"Spawner"answers"HealthIncrease"脚本。哦,是的,我添加了刚体/盒子对撞机。

这是我的房主脚本(我将其添加到空游戏对象中)

public class Spawner: MonoBehaviour {
    public GameObject Power;
    public GameObject player;
    public float spawnOffset=3.0f;
    public float spawnDelay = 5;
    int currentPowerUpCount;
    int currentWaveNumber =1;
    Vector3 randomSpawnPoint{
        get{
            int randIndex = UnityEngine.Random.Range(0, transform.childCount-1);
            var position = transform.GetChild(randIndex).position + UnityEngine.Random.insideUnitSphere * spawnOffset;
            position.y =0;
            return position;
        }
    }
    void Start(){
        currentPowerUpCount = currentWaveNumber * 3;
        Spawn ();
    }
    void Update(){
        CheckifReadySpawn ();
    }

    void Spawn ()
    {
        Debug.Log ("spawm" + currentWaveNumber);
        for (int i = 0; i < 10; i++) {
            var enemyGameobject = (GameObject)Instantiate (Power, randomSpawnPoint, Quaternion.identity);
        }
    }
    void CheckifReadySpawn ()
    {
        if (currentPowerUpCount <= 0) {
            currentWaveNumber++;
            currentPowerUpCount = currentWaveNumber * 5;
            Invoke ("Spawn", spawnDelay);
        }
    }

}

这是HealthIncrease(我将其添加到多维数据集)

public class HealthIncrease : MonoBehaviour {
    public UISlider healthBar;
    public GameObject player;
    // Use this for initialization
    void Start () {
    }
    // Update is called once per frame
    void OnTriggerEnter (Collider collider) {
    if (collider.CompareTag("Player"))
        PickItUp ();

    }
    void PickItUp ()
    {
        var playerStats = (Stats)player.GetComponent<Stats> ();
        if (playerStats.health >= 500) {
            return;
        }
        else {
            playerStats.health += 50;
            Destroy (this.gameObject);
            healthBar.value = playerStats.health / 500;
        }
    }

}

生成的对象未触发Unity3D

我猜拾取器的预制件上没有对撞机。注意:为了进行碰撞,至少其中一个物体需要有刚体,并且两者都需要有对撞机。