如何检测Unity中发生碰撞的位置?

时间:2019-07-09 22:31:40

标签: c# unity3d scripting

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

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

}

一旦获得相对位置,我就可以进行数学运算以确定球应该走的方向,我只需要获取该值即可。谢谢!

1 个答案:

答案 0 :(得分:3)

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...
    }

}