Estoy haciendo un juego y necesito ayuda. Lo que quiero conseguir es
automatizar el salto del tal manera que cuando el personaje que
nosotros movemos hacia la derecha y un enemigo este a "y" altura
calcule x-y para atacar a nuestro personaje mediante un movimiento
parabólico. Esto es solamente una idea, ni lo he probado:
--Variables personaje 1 x1inicial = 20 v1inicial = 0 y = 200 --Variables personaje 2 x2inicial = 420 v2inicial = 0 y2inicial = 100 y2final = 200 g = 9.8 --Valor del tiempo contadot = Timer.new() contador:start() t = contador:time() ---------------------------------------------. --Fórmulas para el cálculo de la trayectoria . --X = X + V*T . --Y = Yinicial + vinicial -1/2*g(t*t) . --vfinalx = vinicial * cos . --vfinaly = vinicial * sin . ---------------------------------------------. --Calculos personaje 1 v1finalx = pasosd * math.cos(100) x1 = x1inicial + v1finalx * t --Calculos personaje 2 v2finalx = pasosi * math.cos(100) v2finaly = pasosi * math.sin(100) x2 = x2iniciak + v2finalx * t y2 = y2inicial + v2finaly - 1/2 * g * (t*t
Las variables pasosd y pasosi hacen referencia al tutorial de mover
sprites, si sabéis alguna manera de solucionar y combinar el movimento
de sprites con estas funciones decidlo.
Perdonadme he echo un doble
Perdonadme he echo un doble post sin querer.
un consejillo
A lo mejor te sirve debes de ajustar las ecuaciones de tal manera que a partir de esa posición que quiera llegar una xfinal y una yfinal,ojo no la de las fórmulas si no la del objetivo, se cumpla para un grado desde tu posicion inicial o de tu personaje,el bueno, y una velocidad y por último he de decirte que tendrás que crear la manera de que el personaje se pare antes de seguir bajando debido a la gravedad.
Saludos.
en lo que lo checo
http://es.wikipedia.org/wiki/Movimiento_parab%C3%B3lico
vere lo de estas formulas, pero tendras que ponerlo en una funcion dentro del while que usas para el movimiento de tus personajes, de esta manera el objeto bala por decirlo asi, actualizara su pocicion hast allegar a su objetivo.
entonces
setiniparabola(num,dato.....)
while
putparabola(num,bala,destino) donde destino es la screen o imagen, segun que lua uses. opcional a usar en screen por defaul
etc..
etc..
end
de eta manera actualizas tu objeto bala
donde num es la parabola correspondiente a un objeto x, pues puedes tener mil balas y cada una una trayectoria y destino diferencte.
aunque si haces unos bosquejos en papel del resultado me ayudas mas, porque creo que no son balas sino ataques de pelea lo que buscas.
GuinXell aprender mas...
Parábola
Correcto. El caso que preguntaba de parábola es:
Mi duda es que como hago la parabola del enemigo que está en una montaña de 100 pixeles de altura (por ejemplo) y que el enemigo calcule X e Y del personaje para atacar. Por ejemplo si has jugado al left 4 dead, ¿como se haría el movimiento del hunter? Utilizo Lua Player HM7. Pero luego el problema que habrá será para volver hacer el salto, porque no seran las mismas coordenadas, se tendría que hacer una funcion global que guarde los datos de X e Y para cada movimiento y posicion.
Una idea:
Pero, aquí también hay un problema, este codigo calcula X e Y pero no lo hace referencia al personaje.
me falto la img, pero bueno...
A.
?
B
en este caso el personaje simpre sabe donde estas, y nunca falla, a menos que despues de dar el el salto tu te muevas.
bien, este movimiento sgun veo, es por ejmeplo con gravedad de caida, acelareacion y bajada tanto en x como en y
vien le vas a acelerar la gravedad a caida libre, al mismo tiempo que avanzar segun la velocidad inicial o aceleracion de salida de potencia
que le des.
datos que el atacante tendria(en los corchetes va el numero del personaje)
A[].objetivo.x = 210
A[].objetivo.y = 10
A[].vo = 0
A[].a = 6.8
A[].vf = ?
A[].mipocicion.x = 20
A[].mipocicion.y = 180
con esto calculamos el movimiento a una funcion
es decir
lanzamos la funcion de ataque de mi personaje.
toma en cuenta esto, si funcion es fija, el personaje atacado NO se podra mover
para ello tines que usar una corutina, para que mientras el personaje aque ataca en movido por la funcion ataque
este personaje el atacado pueda moverse de ahi y evitar el ataque
en este caso las corutinas, ayudan a tener mas de un movimiento a la vez, cuando otros son predefinidos, o fijos sin cambio
es decir que si un objetivo es fijo, pero depende de una funcion global, esta no detenga el tiempo para los demas.
es decir, no es correcto poner una funcion de tiempo dentro de mi while principal.
porque, porque todo dependeria de ello.
pro sino manejas corutinas, haz que la funcion global dependa de una opcion de me estoy moviendo o no.
ed decir que la funcion no acabe sino que solo se mueva un punto, y se salga, cuando la vuevlas a llamar
dentro de tu wile, la funcion dira buscar personajes atacando, encontrado, contnuar moviendo, salir.
y asi sucesivamente, dandote tiempo a que tu tambien te muevas pixel por pixel, o seun la cantidad especificada.
es decir, tendras dentro de tu while
las funciones que muevan.
while
balas()
ataques()
mov_personajes()
end
etc..
entonces hay que definir desde donde es el salto, serian varias formulas,
ya que varia si es en caida libre, en salto mayor que la caida, de globito, etc.
trata de leer mas sobre las formulas, pero de todos modos deja leo un poco
y vere si puedo escribir algo rapidito, la verdad nunca he manejado este tipo
de formulas de parabolas.
pero notece que independientemente de que formula se use.
estas tecnicas le daran velocidad a tus juegos.
GuinXell aprender mas...
Wao
Me sorprende esto de la fisica, por eso es bueno tener buenos conocimientos de fisica para crera un juego, me trevo a decir que la mayor parte de crera un juego se basa en la fisica, claro dependiendo de clase de jugo sea, pues un quiz ... solo la necesitaria si el quiz fuera de fisica xDDDDD.
Saludos.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects