Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity 2d中的碰撞检测_C#_Unity3d_Collision Detection_Game Engine_2d Games - Fatal编程技术网

C# Unity 2d中的碰撞检测

C# Unity 2d中的碰撞检测,c#,unity3d,collision-detection,game-engine,2d-games,C#,Unity3d,Collision Detection,Game Engine,2d Games,我正在做我的第一个Unity项目。这是一个小游戏,你必须移动你的星球来躲避来袭的小行星 我已经建立了一个简单的碰撞检测系统,但它目前不起作用,我也不完全清楚为什么 这些是代码行,它们在星球的运动脚本上,附在我的游戏对象星球上: private void OnTriggeredEnter2D(Collider2D collision) { if (collision.tag == "Asteroid") { restartPanel.SetAct

我正在做我的第一个Unity项目。这是一个小游戏,你必须移动你的星球来躲避来袭的小行星

我已经建立了一个简单的碰撞检测系统,但它目前不起作用,我也不完全清楚为什么

这些是代码行,它们在星球的运动脚本上,附在我的游戏对象星球上:

private void OnTriggeredEnter2D(Collider2D collision)
{
    if (collision.tag == "Asteroid")
    {
        restartPanel.SetActive(true);
    }
}
小行星是以这种方式在脚本中动态生成的预制体,附加到一个不可见的游戏对象上:

void Update()
{
    float interval = Time.deltaTime;
    random = Random.Range(0f, 1f);
    Debug.Log(interval);
    Debug.Log(random);
    if (interval > random) {
        GameObject newAsteroid = Instantiate(asteroidPrefab, GetRandomPosition(), Quaternion.identity);
        newAsteroid.GetComponent<Gravity>().planet = planet;
    }
}
void Update()
{
浮动间隔=Time.deltaTime;
随机=随机范围(0f,1f);
调试日志(间隔);
调试日志(随机);
如果(间隔>随机){
GameObject newAsteroid=实例化(asteroidprefate,GetRandomPosition(),Quaternion.identity);
newAsteroid.GetComponent().planet=planet;
}
}
当行星与任何小行星碰撞时,或者当小行星相互碰撞时,都不会发生任何事情,如果这很重要的话,我也不完全确定为什么


谢谢您的帮助。

方法名称不正确,我搞砸了,应该是OnTiggerEnter2D,而不是OnTiggerEnter2D

哎呀