我试图重拍Pong。我已经完成了所有代码,但由于某种原因,OnCollisionEnter2D并不总是激活。
以下是代码:
void OnCollisionEnter2D(Collision2D col)
{
if(col.gameObject.name == "paddle")
{
float y = hitFactor(gameObject.transform.position, col.transform.position, col.collider.bounds.size.y);
Vector2 dir = new Vector2(1, y).normalized;
GetComponent<Rigidbody2D>().velocity = dir * speed;
Debug.Log(y);
}
if (col.gameObject.name == "paddle2")
{
float y = hitFactor(gameObject.transform.position, col.transform.position, col.collider.bounds.size.y);
Vector2 dir = new Vector2(-1, y).normalized;
GetComponent<Rigidbody2D>().velocity = dir * speed;
Debug.Log(y);
}
代码应该根据球击中球拍创建Y值,以便它可以创建球的行进方向,但是在监控控制台之后我注意到OnCollisionEnter2D有时只是激活,现在和然后,没有任何明显的模式。
知道为什么会这样吗?我不认为它的原因是物体快速移动,我把速度降低到几乎没有,它仍然不会一直触发