Unity 2d 中的碰撞检测

Posted

技术标签:

【中文标题】Unity 2d 中的碰撞检测【英文标题】:Collision detection in Unity 2d 【发布时间】:2021-08-12 00:41:33 【问题描述】:

我正在开发我的第一个 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;
    

当行星与任何小行星相撞时,或者当小行星相互碰撞时,什么都不会发生,如果这很重要的话,我不完全确定为什么。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

方法名不正确,我搞砸了,应该是OnTriggerEnter2D,而不是OnTriggeredEnter2D。

哎呀。

【讨论】:

以上是关于Unity 2d 中的碰撞检测的主要内容,如果未能解决你的问题,请参考以下文章

unity碰撞检测(碰撞器,触发器)

Unity 在没有 IsTrigger 的情况下使用 OnCollisionEnter2D 检测碰撞

小功能⭐️Unity解决物体移动速度过快不能检测到碰撞

使两个物理对象不碰撞,但在 Unity 中检测碰撞

unity3d OncollisionEnter2d检测不到碰撞,而且勾了isTrigger也无法穿过

Unity---2d射线检测