【问题标题】:How can I detect where a collision occurs in Unity?如何检测 Unity 中发生碰撞的位置?
【发布时间】:2019-07-09 22:31:40
【问题描述】:

我正在尝试制作乒乓球游戏,我需要检测球击中球拍的哪个位置。当它们碰撞时,我如何确定球相对于桨的位置?我是否必须确定每个对象的位置然后进行比较,还是有其他方法可以做到这一点,也许使用 getContact 方法?

void OnCollisionEnter2D(Collision2D col)
{
    if (col.gameObject.tag == "rightRect" || col.gameObject.tag == "leftRect")
    {
       //What do I put here?
    }

}

一旦我得到相对位置,我就可以计算出球应该去的方向,我只需要得到那个值。谢谢!

【问题讨论】:

    标签: c# unity3d scripting


    【解决方案1】:

    使用球上的OnCollisionEnter2D(Collision2D col),您可以轻松比较球的位置 (transform.position) 与球拍的位置 (col.transform.position)。您可能最感兴趣的是它们在 y 轴上的比较位置,因此可能如下所示:

    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.tag == "rightRect" || col.gameObject.tag == "leftRect")
        {
           float ballYFromPaddle = transform.position.y - col.transform.position.y;
    
           // do stuff with ballYFromPaddle...
        }
    
    }
    

    【讨论】:

    • 哦,谢谢。我没有意识到变换可以给你价值,我认为它只会让你操纵它们。这会奏效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多