C# 我想在与钉子相撞后将玩家发送到重新启动屏幕
我正在做一个游戏,当玩家与钉子相撞时,应该切换场景 我有球员标签球员,我有球员和扣球盒对撞机C# 我想在与钉子相撞后将玩家发送到重新启动屏幕,c#,unity3d,C#,Unity3d,我正在做一个游戏,当玩家与钉子相撞时,应该切换场景 我有球员标签球员,我有球员和扣球盒对撞机 using UnityEngine.SceneManagement; public class Die : MonoBehaviour { void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "EnemySpike(Clone)") {
using UnityEngine.SceneManagement;
public class Die : MonoBehaviour
{
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "EnemySpike(Clone)")
{
SceneManager.LoadScene("Death");
}
}
}
它没有给出任何错误,只是不起作用。我假设LoadScene永远不会被调用,因为在if语句中,您将游戏对象的标记与游戏对象的名称进行比较。您可以将
collision.gameObject.tag
更改为collision.gameObject.name
或将字符串更改为objects实际标记。此外,最好在碰撞发生时记录日志,以便确认检测到碰撞。要做到这一点,只需使用Debug.Log(“与Spike冲突”)代码>为了检测到碰撞,至少有一个物体必须具有刚体。单靠对撞机是行不通的
我经常碰到这个。您可以执行打印(“冲突”)代码>以查看是否发生了碰撞。我打赌不是。您需要添加一个刚体
如果它们都有刚体,请尝试改用ontrigger enter,并将spike collider设置为istrigger。是否将要加载的场景添加到构建设置中?场景处于构建设置中,但仍不工作。这是我的新代码。使用UnityEngine.SceneManagement;公共类Die:MonoBehavior{void onCollisionCenter(冲突冲突){if(Collision.gameObject.name==“EneySpike(Clone)”{Debug.Log(“与Spike冲突”);SceneManager.LoadScene(“死亡”);}}问题很可能是if语句条件未满足。当您与钉子碰撞时,是否看到控制台上打印的“与钉子碰撞”?如果你不这样做,这意味着它没有执行。SceneManager.LoadScene似乎不是问题。不,我没有看到“与Spike碰撞”这意味着没有检测到你的碰撞。(if语句未得到满足,或者根本没有调用OnCollisionCenter。)请查看此视频以获取有关碰撞的教程。谢谢,我看了视频,但我还是不确定问题出在哪里。他们都有刚体