Intento explicarte lo del tiempo pero en la práctica es muy sencillo.
Lo que se hace es establecer "Frames por segundo", yo le pongo 120, lo cual en teoría es que en 1 segundo se muestra hasta 120 cambios en la pantalla, creo... O sea, en una misma pantalla o instante o frame puede haber muchos cambios, porque muchas cosas se pueden mover, cambiar de color, etc, pero se refiere al todo.
Si pones 120 frames por segundo, y Mario se mueve 0.1 pixel por frame, y una tortuga 0.01 píxeles por frame, entonces en 1 segundo Mario se moverá 12 píxeles y la tortuga 1.2 píxeles.
Si todo es igual pero pones 12 frames por segundo en vez de 120, entonces el movimiento en 1 segfundo será Mario 1.2 píxeles y la tortuga 0.12 píxeles.
Quizá están mal las cuentas pero en la práctica es así, conviene poner mucho framerate para que si algo se mueve muy rápido se vea en cada lugar, en vez de que se vea entrecortado. También depende de la velocidad de refresco del monitor, así que poner 120 es medio en vano si el monitor no soporta tanto, pero en fin.
El tiempo de los tiros yo lo cuento en el programa, así que no hay necesidad de calcularlo. O sea, cuando el tiro se realiza, empiezo a contar cuántos frames o instantes ocurrieron desde eso. Lo hago porque Ivorra o Fuentes (no recuerdo) me recomendó hacerlo para calcular mejor la posición en que se encontrará el tiro en cada T.
Para la altura z no hay límite.
Para X e Y tampoco, sólo que los jugadores quedarían fuera de la pantalla, y no tiene mucho sentido golpear la bola desde ahí, el jugador no se vería. Aunque la imagen de la cancha y los jugadores se podría reducir en esos casos, para que siempre se vean, pero no es algo que tenga pensado hacer pronto, no saber Matemática o Física, o lo que sea, me hace avanzar a pasos de tortuga.
Cualquier posición de la bola, po debajo de cero o por encima de esos límites estará fuera de juego y no podrá ser impactada.
Digamos que es así, nadie querría golpear una bola que botará tan out, pero no le veo lo relevante.
La cancha tiene dimensiones su esquina inferior izquierda estará en x0ey0
En Flash es al revés, el punto 0, 0 está en la esquina superior izquierda. Y aumenta hacia abajo.
el campo se divide en sectores propio y del rival, cuando la posición y esté por encima de y>y0+ylargo/2
A ver, la hoja de Flash la configuré que mida 800x600, y el centro de la red està en 400, 300, con lo cual, si la bola está a < 300 está en la parte de arriba y si está a > 300 está abajo. Si está en 300 está justo en medio. Entonces sí, es Largo(600)/2, pero eso de Y>Y0 no sé bien qué es. Supongo que el límite, debe estar dentro del límite sí si hubiera, pero también del otro límite entonces (debe ser =>min y <=max).
Las zonas legales de pique se pueden establecer de modo similar, la cancha está dibujada, no sé mucho de operaciones matemáticas, simplemente miro en qué punto X o Y están ubicadas las líneas y si es menos o más que eso, según el caso, es in u out. Pero realmente no llegué a eso, simplemente establecí un "punto ideal" donde debe botar la bola, e intento calcular qué velocidades deben tener los tiros para que la bola bote ahí, si el personaje tiene suficiente fuerza, sino intenta lanzar más recto y, bueno, no es el tema...
Una vez que sepa cómo hacer el cálculo para que bote en ese punto, pondré la opción de cambiarlo. Lo de chequear si fue in u out va más adelante. A ver, te muestro un diagrama que estoy intentando hacer (no sé si está bien):

Primero la fuerza del personaje se reparte en XY de modo que la bola se dirija al punto deseado. Pero la velocidad Z es 0, por lo que pueden ocurrir muchas cosas indeseadas. Ahí es donde entra en acción el diagrama. Pero recién estoy viendo en qué medida puedo responder la 2nda pregunta. La idea es que antes de realizarse el tiro que te comenté se calcule cómo será, y se vaya modificando hasta que sea el tiro "perfecto". Luego, según la puntería y suerte del personaje, puede modificarse mucho, poco o nada.
Creo que hay formas más sencillas de hacer eso, pero no las sé. Puede que la respuesta esté aquí:
https://foro.rinconmatematico.com/index.php?topic=122044.0Pero algún problema hubo y yo ya no intento resolverlo de ese modo, es como que esperé demasiada ayuda (un profesor también dijo que me ayudaría, me dijo que fuera un día, lo esperé como 1 hora porque estaba tomando exámenes y luego era tarde ¿pero para qué me dijo que fuese en ese momento entonces?), ahora pido cosas más sencillas y yo intentaré hacer el resto que pueda.
El primer tiro luego de un saque tiene que caer al lado invertido del terreno
Sí pero por ahora no es relevante, quisiera que me respondas las preguntas del tema... Las reglas del tenis ya las sabemos en general.
Digamos tu tienes una variable llamada ángulo
No sé cómo calcularla. Yo hago esto:
Norma = Math.sqrt(DistanciahastaDestinoX*DistanciahastaDestinoX+DistanciahastaDestinoY*DistanciahastaDestinoY);
BallXSpeed = DistanciahastaDestinoX/Norma*-AlexFuerzadetiros;
BallYSpeed = DistanciahastaDestinoY/Norma*-AlexFuerzadetiros;
BallZSpeed = 0;
O sea, el ángulo es calculable supongo, pero no sé de eso. Es como que yo obtengo un triángulo: La velocidadX es el largo, y la velocidadY es la altura. Viendo el topic de rotación de las flechas quizá podría calcularlo.
puedes hacer que si la bola es impactada por debajo de (zmin), sal un tiro perdedor
Tendré que pensarlo, un tiro que bota muy poco no se puede devolver fuerte, pero de ahí a que la devolución siempre choque la red no me parece.
la nueva posición de la bola en la coordenada $$x$$ en el tiempo $$t$$ te queda
$$x=x_i+v\cdot\sin\alpha\cdot t\cdot \cos\beta$$
$$y=y_i+v\cdot\cos\alpha\cdot t\cdot \cos\beta$$
Eso me enseñaron a hacerlo así:
Tiempotranscurridodeltiro = Tiempotranscurridodeltiro+1;
BallX = BallXwhenstriked+BallXSpeed*Tiempotranscurridodeltiro
BallY = BallYwhenstriked+BallYSpeed*Tiempotranscurridodeltiro
En cuanto a la BallZ no recuerdo si me dijeron algo pero aún no intenté aplicarlo, hago esto:
BallZSpeed = BallZSpeed-0.01;
BallZ = BallZ+BallZSpeed;
donde g es la gravedad $$g=9.8m/s^2$$
Al principio del tema expliqué cómo funciona la gravedad en este juego, me parece más simple así. Y lo tienes en las fórmulas que acabo de poner.
Bueno, en otra ocasión intento aplicar tu fórmula y leo el resto, por hoy este asunto me cansó. ¡