Muy buena idea, la modificación que propongo es la siguiente:
//se obtiene la precisión del jugador considerando su energía
error = j.getPrecision() * (((ce.eq == EQUIPO_LOCAL) ? spLocal.getMyPlayerEnergy(cgp.getPlayerIndex()) : spLocal.getRivalEnergy(cgp.getPlayerIndex())));
error = Constants.getErrorAngular(error);//obtiene el error angular
error = Math.min(Math.max(- error / 2, rand.nextGaussian()*error/4), error / 2);
angulo = angulo + error * Math.PI;//calcula el angulo destino
Básicamente la idea es usar una distribución gaussiana con una una media igual al ángulo especificado por el comando y desviación estándar iguala a error/4, además de acotar el resultado par que nunca sea superior a error/2. Lo que debemos pensar es si con una desviación estándar igual a error/4 nos vale o si debemos cambiarla para lograr mayor o menor precisión en el pase.
Saludos.
Esta es la explicación:
la aleatoriedad de los tiros siguiese una distribución normal en vez de una uniforme.
Saludos.