No collision detected.

Hello,

I decided I wanted to learn how to work with the unity2D engine, and started with trying to make pong. This was going pretty good, until I found a problem I couldn’t find/didn’t understand an answer for on google .

Every time the player/AI hits the ball, I make the ball go a little bit faster. This works fine until the ball goes pretty fast (still playable though) and just passes through the player/AI. I solved this by making the box collider of the player/AI really long, but at really high (and unplayable) speeds it still goes through.

My solution works, but isn’t that pretty, and I wonder if there is a better solution for this (make the engine check more often for collisions?).

Here’s the script for the ball movement (Javascript):

#pragma strict

var StartSpeed : int;
var speedFactor : float;

function Start () {
    yield WaitForSeconds(2);
    StartBall();
}

function ResetBall () {
    GetComponent.<Rigidbody2D>().velocity.x = 0;
    GetComponent.<Rigidbody2D>().velocity.y = 0;
    transform.position.x = 0;
    transform.position.y = 0;
   
    yield WaitForSeconds(0.5);
    StartBall();
}

function StartBall () {
    var randomDirection = Random.Range(0f,1f);
    var randomAngle = Random.Range(-Mathf.PI/4, Mathf.PI/4);
   
   
    if(randomDirection < 0.5f){
        GetComponent.<Rigidbody2D>().velocity.x = Mathf.Cos(randomAngle) * StartSpeed;
        GetComponent.<Rigidbody2D>().velocity.y = Mathf.Sin(randomAngle) * StartSpeed;
    }else{
        GetComponent.<Rigidbody2D>().velocity.x = - Mathf.Cos(randomAngle) * StartSpeed;
        GetComponent.<Rigidbody2D>().velocity.y = Mathf.Sin(randomAngle) * StartSpeed;
    }
   
}

function OnCollisionEnter2D (colInfo : Collision2D) {
    if(colInfo.collider.tag == "Player"){
        GetComponent.<Rigidbody2D>().velocity.x = speedFactor * GetComponent.<Rigidbody2D>().velocity.x;
        if(colInfo.collider.GetComponent.<Rigidbody2D>().velocity.y == 0){
            GetComponent.<Rigidbody2D>().velocity.y = speedFactor * GetComponent.<Rigidbody2D>().velocity.y;
        }
       
        var vel = GetComponent.<Rigidbody2D>().velocity;
        Debug.Log("Speed: " + vel);
    }
}

Any other comments on the script that may improve it are welcome!

try to switch collision detection of rigidbody to continious