游戏对象上的 Unity 3D 碰撞不起作用
Unity 3D Collision on gameobject not working
我编写了一个代码,一旦你在游戏对象上发生碰撞,它就会转到不同的场景,游戏对象是一张床,我应用了一个名为 Bed 的标签,我应用了一个刚体,我已将代码应用于播放器,一旦碰撞代码就会激活,但由于某些明显的原因,它仍然无法正常工作,
这是我应用到播放器的代码:
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");
}
}
}
您的问题很可能是您检查的是 collider
的标签,而不是 gameObject
if(Collisionbad.gameObject.tag == "Bed"))
此外,考虑使用 CompareTag,因为它更有效
if(Collisionbad.gameObject.CompareTag("Bed"))
为发生碰撞的两个对象添加 BoxColliders
将此脚本添加到与 Bed 碰撞的对象
在设置中检查对象 1 和 2 的图层,它们不会发生碰撞
并且您的脚本必须有效
我编写了一个代码,一旦你在游戏对象上发生碰撞,它就会转到不同的场景,游戏对象是一张床,我应用了一个名为 Bed 的标签,我应用了一个刚体,我已将代码应用于播放器,一旦碰撞代码就会激活,但由于某些明显的原因,它仍然无法正常工作,
这是我应用到播放器的代码:
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");
}
}
}
您的问题很可能是您检查的是 collider
的标签,而不是 gameObject
if(Collisionbad.gameObject.tag == "Bed"))
此外,考虑使用 CompareTag,因为它更有效
if(Collisionbad.gameObject.CompareTag("Bed"))
为发生碰撞的两个对象添加 BoxColliders 将此脚本添加到与 Bed 碰撞的对象 在设置中检查对象 1 和 2 的图层,它们不会发生碰撞 并且您的脚本必须有效