En el código puse esto:
AnguloXY = Math.atan (DistanciahastaDestinoX/DistanciahastaDestinoY);
DistanciaXY = Math.sqrt (DistanciahastaDestinoX*DistanciahastaDestinoX+DistanciahastaDestinoY*DistanciahastaDestinoY);
C = Gravedad*Gravedad*DistanciaXY*DistanciaXY/Math.pow (AlexFuerzadetiros, 4)-1;
B = Gravedad*BallZ/AlexFuerzadetiros-1;
A = BallZ/DistanciaXY+1;
S = (-B+Math.sqrt (B*B-4*A*C))/(2*A);
AnguloZ = Math.acos (Math.sqrt(S));¿Todo bien?
Vi más de lo que escribiste pero ¿qué velocidades pongo? No vi que definieras eso. Yo antes hacía:
Norma = Math.sqrt(DistanciahastaDestinoX*DistanciahastaDestinoX+DistanciahastaDestinoY*DistanciahastaDestinoY);
BallXSpeed = DistanciahastaDestinoX/Norma*-AlexFuerzadetiros;
BallYSpeed = DistanciahastaDestinoY/Norma*-AlexFuerzadetiros;
BallZSpeed = 0;Preciso que me digas qué poner en BallXSpeed, BallYSpeed y BallZSpeed.
Otro día sigo leyendo y aplicando.
Edit: ¿Cómo calculas \( Z_r \)?
Si no pasa tienes que aumentar \( V \)
Eso sería aumentar el potencial del personaje, que golpeé más fuerte de lo que sus capacidades le permitan, no es lógico, en ese caso lo que hace es intentar que bote más cerca, es decir que el tiro sea más perpendicular a la red, más recto, sin tanta velocidad en X. Si incluso con eso no pasa, entonces simplemente no pasa.
Bueno, pruebo el juego con lo que agregué y te digo qué me da, pero sin especificar las velocidades no es suficiente.
Variable _level0.Gravedad = 0.01
Variable _level0.MinsafeBallZ = 18.6
Variable _level0.AlexFuerzadetiros = 3.975
Variable _level0.DistanciahastaDestinoX = 133.9
Variable _level0.DistanciahastaDestinoY = 365
Variable _level0.DistanciahastaRedY = 248
Variable _level0.BallXwhenstriked = 417
Variable _level0.BallYwhenstriked = 548
Variable _level0.BallZwhenstriked = 45.34
Variable _level0.AnguloXY = 0.351605787007015
Variable _level0.DistanciaXY = 388.785557859342
Variable _level0.C = -0.939455915595726
Variable _level0.B = -0.885937106918239
Variable _level0.A = 1.11661955822033
Variable _level0.S = 1.39606186037174
Variable _level0.AnguloZ = -1.#IND
Parece que AnguloXY está mal, AnguloZ también.