Duda rebote al colisionar [Unity]

A

Hola, a ver si alguien puede ayudarme, me han pedido en clase que haga un pong en 2D, ya esta todo echo sin problema mas o menos, pero me pide como condicion que la bola rebote con un angulo mayor cuanto mas alejada golpee de la pala y he estado buscando pero no encuentro la forma.

Muchas gracias de antemano.

Czhincksx

Hasta ahora me imagino que tendrás algo parecido a esto (en pseudocódigo):

OnCollisionEnter(){

obj.speed.x = -obj.speed.x;

}

Lo que creo que tendrás que hacer será algo parecido a esto otro.

OnCollisionEnter(){
    
ball.speed.x = -ball.speed.x; float dist = Mathf.Abs(ball.position.y - bar.position.y); if(ball.speed.y > 0) ball.speed.y += dist * mult; else ball.speed.y -= dist * mult; }

Básicamente calculas la diferencia de posición de ambos objetos y se lo añades o restas al vector velocidad del eje "y" aplicándole un multiplicador que ajuste la cantidad de ángulo en función de la distancia.

1 respuesta
A

#2 En realidad lo que e echo es declarar una variable speed con un valor y despues creé una función para que al iniciar la bola salga hacia una direccion, pero el tema del rebote, no he echo nada, solo le he aplicado a la bola un collider y le he puesto el material ball.

1 respuesta
Czhincksx

#3 No estoy seguro, pero creo que si controlas el rebote con un physic material no podrás ajustar los ángulos como te piden.

1 respuesta
A

#4 Vale, muchas gracias, voy a probar entonces de otra manera.

Usuarios habituales

  • Adriangil10
  • Czhincksx