Anuncios Google

[LUA] ¿Alguien sabe?

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?

Un salu2


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Guillermo_Cornielle

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

Imagen de pipagerardo

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

Imagen de pipagerardo

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 )

Imagen de yoan03

Ok

lo vere y lo leere muy bien para ver k tal.

 Gracias

Imagen de Tanos

Como complemento

Como complemento:

Este enlace trae montones de funciones matemáticas.

 

Imagen de Tanos

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 :)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.