游戏对象上的 Unity 3D 碰撞不起作用

时间:2021-01-17 21:16:39

标签: c# unity3d collision-detection collision scene-manager

我编写了一个代码,一旦你在游​​戏对象上发生碰撞,它就会转到不同的场景,游戏对象是一张床,我已经应用了一个名为床的标签,我已经应用了一个刚体,我已经将代码应用到玩家,一旦你碰撞代码就会激活,但由于某些表面原因,它仍然不起作用,

这是我应用到播放器的代码:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;

public class PlayerCollision : MonoBehaviour
{
    
  void OnCollisionEnter (Collision Collisionbad)
       {
        
          if (Collisionbad.collider.tag == "Bed")
           { 
                  Debug.Log("Roll Credits");
                  SceneManager.LoadScene("EndingScreen");
           }
        }
}

2 个答案:

答案 0 :(得分:0)

您的问题很可能是您正在检查 collider 而不是 gameObject

if(Collisionbad.gameObject.tag == "Bed"))

另外,考虑使用CompareTag,因为它更有效

if(Collisionbad.gameObject.CompareTag("Bed"))

答案 1 :(得分:0)

向发生碰撞的两个对象添加 BoxColliders 将此脚本添加到与床碰撞的对象 在设置中检查对象 1 和 2 的图层,它们可以碰撞 你的脚本必须工作