Hacer que un punto siga a otro punto

Estoy escribiendo un muy rápido mini juego, y no tengo ninguna implementación de vector para él. Esto es lo que tengo:

local qx = manx
        local qy = many
        local px = bigenemyx
        local py = bigenemyy
        local vx = qx - px
        local vy = qy - py
        local mag = math.sqrt(vx^2 + vy^2)
        bigenemyx = bigenemyx + mag * speed * dt
        bigenemyy = bigenemyy + mag * speed * dt

bigenemy necesita seguir man. bigenemy simplemente desaparece de la pantalla. Apresuré el código para esto y (evidentemente) no tengo experiencia con las matemáticas en esto, gracias por cualquier ayuda. Disculpas si no he pensado con claridad, ¡realmente no me he ceñido a "más velocidad menos prisa"!

preguntado el 22 de mayo de 12 a las 19:05

2 Respuestas

Bueno, está utilizando el valor 'mag' en todas las direcciones, no es bueno. Tratar

    if(mag < 0.0001): mag = 1
    bigenemyx = bigenemyx + (vx/mag) * speed * dt
    bigenemyy = bigenemyy + (vy/mag) * speed * dt

contestado el 22 de mayo de 12 a las 19:05

Tu problema está en las dos últimas líneas. Estás moviendo al enemigo en la dirección de <1,1> pase lo que pase. Tratar:

bigenemyx = bigenemyx + vx/mag*speed*dt
bigenemyy = bigenemyy + vy/mag*speed*dt

Así que estás obteniendo la dirección de v.

contestado el 22 de mayo de 12 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.