首页 > 解决方案 > 当相机与地形碰撞时加载gameOver场景

问题描述

在这里,我为所有标记为 Lost 的地形创建了一个空白

在此处输入图像描述

如果玩家与这些地形之一发生碰撞,我想加载 gameOver 场景,所以我写了这段代码,但没有任何反应

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class collide : MonoBehaviour
{
    private LevelManager l;
    // Start is called before the first frame update
    void Start()
    {
        //l = GameObject.FindObjectOfType<LevelManager>();

    }

    // Update is called once per frame
    void Update()
    {

    }
    void OnColliderEnter(Collision c)
    {
        if (c.gameObject.tag == "Lost") {
            SceneManager.LoadScene("Lose");
        }

    }

}

我是 Unity 的初学者,所以请尽量详细地向我解释。

标签: c#unity3d

解决方案


我认为您正在寻找OnCollisionEnter()而不是OnColliderEnter().

我倾向于一次写信给控制台以隔离一个问题。也许先验证您是否正在捕获碰撞事件,然后再担心场景变化。

void OnCollisionEnter(Collider col)
{
    // Apaprently CompareTag is better for performance
    if (col.gameObject.CompareTag("DeathTerrain"))
    {
        Debug.Log($"This is where you die to {col.gameObject.name}");
    } else
    {
        Debug.Log($"Hit a game object named {col.gameObject.name} that didn't have the tag.");
    }
}

推荐阅读