我对c#还是陌生的,一般来说都不擅长编码。尝试学习。我希望该游戏能够检测到我的物体何时撞到东西,以查看它是否撞到了不是地面或终点的东西,然后重新加载场景。首先,我尝试过:
public class wallCollision : MonoBehaviour
{
public Rigidbody rb;
public Vector3 spawn;
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name != "Ground")
{
Scene scene = SceneManager.GetActiveScene();
SceneManager.LoadScene(scene.name);
}
}
}
它奏效了,所以我也将其更改为该字符以检查完成程度。
public class wallCollision : MonoBehaviour
{
public Rigidbody rb;
public Vector3 spawn;
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name != "Ground" || "Finish")
{
Scene scene = SceneManager.GetActiveScene();
SceneManager.LoadScene(scene.name);
}
}
}
没有用,这就是为什么我需要帮助。我希望它像这样思考:
如果物体与任何东西碰撞而没有被磨碎或磨碎,那么
我知道我可能在犯一些简单的错误,但是我不知道该寻找什么来寻求帮助,因此如果有人可以帮助,将不胜感激。预先感谢。
答案 0 :(得分:0)
您必须将初始值与两个测试值进行比较:
if (col.gameObject.name != "Ground" && col.gameObject.name != "Finish")
{ }
另一种选择是使用集合和Contains
,但是从性能的角度来看更糟:
if (!(new string[] { "Ground", "Finish" }.Contains(col.gameObject.name)))
{ }
答案 1 :(得分:-1)
我需要您改成这样
col.gameObject.name != "Ground" && col.gameObject.name != "Finish"
不太清楚,但是是否有.Equals()或类似的代码