Alguien sabe como poner k una bala persiga al personaje en lua tal k yo na mas pongo k la dirrecion de la bala sea Vertical o Horizontal alguien me podria decir si existe el codigo para poder hacerlo?
Para esto, si no me equivoco, se necesitan funciones matematicas, no se que ejemplo darte ya que soy un iniciado y apenas empiezo a aprender como usar las funciones matematicas..
Recordatorio de calculo de la dirección entre dos objetivos.
disparo_y = jugador[objetivo].y - jugador[j].y disparo_x = jugador[objetivo].x - jugador[j].x d_disparo = math.deg(math.atan(disparo_y / disparo_x)) if disparo_y < 0 and disparo_x > 0 then d_disparo = 360 + d_disparo elseif disparo_x < 0 then d_disparo = 180 + d_disparo end
Y una vez conocida la dirección que tiene que seguir la bala o misil, pues con esto calculamos la nueva posición de la bala en función de su velocidad.
Recuerda primero calculas la dirección que la bala debe seguir en función de la posición de dos objetivos. Uno de ellos puede ser la propia bala, esto crearia un efecto de misil.
Y despues calculas la nueva posición de la bala en función de la velocidad que quieras. Como puedes ver todo es trigonometría, pero el ordenador trabaja con radianes en vez de grados. Para hacer más eficiente el programa se podria prescindir de las transformaciones de radianes a grados y luego viceversa, pero yo me hago un lio con los puñeteros radianes. La cosa podria quedar algo así:
------------------ d = Dirección v = velocidad x = Coordenada X y = Coordenada Y ------------------
Y si te soy sincero, este tipo de hilos me desesperan, pero no te culpo, nadie nace sabiendo y no todos piensan igual que yo. Creo que este hilo es para poner dudas, no encargos de código :P
Tienes que pensar muy bien lo que quieres hacer y cómo lo vas a hacer. Quieres que la bala persiga a un personaje, entonces tendrías que establecer que las coordenadas de la bala fueran las mismas a las del personaje con algo de variación de velocidad, tamaño...
Como ya lo he dicho, pogramar no es tan simple como desear las cosas (Aunque es lo principal :P) y escribir System.PerseguirPersonaje(10)
Bueno
Para esto, si no me equivoco, se necesitan funciones matematicas, no se que ejemplo darte ya que soy un iniciado y apenas empiezo a aprender como usar las funciones matematicas..
Bueno suerte.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
Matemáticas.
Para calcular la dirección entre dos jugadores y saber la dirección de tiro. Estudia el código y aprende muchas matemáticas.
Esto dá la dirección en grados entre las coordenas de dos jugadores:
(Y por favor no me digas que no lo entiendes, estudialo...)
disparo_y = jugador[objetivo].y - jugador[j].y
disparo_x = jugador[objetivo].x - jugador[j].x
d_disparo = math.deg(math.atan(disparo_y / disparo_x))
if disparo_y < 0 and disparo_x > 0 then d_disparo = 360 + d_disparo
elseif disparo_x < 0 then d_disparo = 180 + d_disparo
end
Segunda Parte:
Recordatorio de calculo de la dirección entre dos objetivos.
disparo_y = jugador[objetivo].y - jugador[j].y
disparo_x = jugador[objetivo].x - jugador[j].x
d_disparo = math.deg(math.atan(disparo_y / disparo_x))
if disparo_y < 0 and disparo_x > 0 then d_disparo = 360 + d_disparo
elseif disparo_x < 0 then d_disparo = 180 + d_disparo
end
Y una vez conocida la dirección que tiene que seguir la bala o misil, pues con esto calculamos la nueva posición de la bala en función de su velocidad.
bala.v_horizontal = math.cos(math.rad(d_disparo))
bala.v_vertical = math.sin(math.rad(d_disparo))
bala.x = bala.x + ( bala.v_horizontal * bala.velocidad )
bala.y = bala.y + ( bala.v_vertical * bala.velocidad )
Recuerda primero calculas la dirección que la bala debe seguir en función de la posición de dos objetivos. Uno de ellos puede ser la propia bala, esto crearia un efecto de misil.
Y despues calculas la nueva posición de la bala en función de la velocidad que quieras. Como puedes ver todo es trigonometría, pero el ordenador trabaja con radianes en vez de grados. Para hacer más eficiente el programa se podria prescindir de las transformaciones de radianes a grados y luego viceversa, pero yo me hago un lio con los puñeteros radianes. La cosa podria quedar algo así:
------------------
d = Dirección
v = velocidad
x = Coordenada X
y = Coordenada Y
------------------
disparo_y = jugador[objetivo].y - jugador[disparo].y
disparo_x = jugador[objetivo].x - jugador[disparo].x
d_disparo = math.atan(disparo_y / disparo_x)
bala.v_horizontal = math.cos(d_disparo)
bala.v_vertical = math.sin(d_disparo)
bala.x = bala.x + ( bala.v_horizontal * bala.velocidad )
bala.y = bala.y + ( bala.v_vertical * bala.velocidad )
Ok
lo vere y lo leere muy bien para ver k tal.
Gracias
Como complemento
Como complemento:
Este enlace trae montones de funciones matemáticas.
No te voy a contestar
Mi forma de "enseñar" es muy "estricta" xD.
Y si te soy sincero, este tipo de hilos me desesperan, pero no te culpo, nadie nace sabiendo y no todos piensan igual que yo. Creo que este hilo es para poner dudas, no encargos de código :P
Tienes que pensar muy bien lo que quieres hacer y cómo lo vas a hacer. Quieres que la bala persiga a un personaje, entonces tendrías que establecer que las coordenadas de la bala fueran las mismas a las del personaje con algo de variación de velocidad, tamaño...
Como ya lo he dicho, pogramar no es tan simple como desear las cosas (Aunque es lo principal :P) y escribir System.PerseguirPersonaje(10)
Un saludo y suerte :)