mobile - plugin - documentation corona sdk
¿Cómo uso applyLinearImpulse en función de la rotación en Corona/Lua? (2)
Hay varias cosas que puedes mejorar en tu código.
El primero es la forma en que calcula el ángulo. En lugar de
ship.rotation*(math.pi/180)
Podrías hacer esto:
local inverseRotation = ship.rotation + math.pi
Una adición es más rápida que una división y una multiplicación. Además, almacenarlo en una variable le evitará calcularlo dos veces. Entonces puedes hacer:
local inverseRotation = ship.rotation + math.pi
local speedX, speedY = 0.5 * math.sin(inverseRotation), -0.5 * math.cos(inverseRotation)
¡Saludos!
Estoy usando el SDK de Corona Gaming Addition para construir un juego iphone / andorid. Tengo una nave espacial en la pantalla y permitiré que el usuario gire la nave 360 grados. Me gustaría llamar al método applyLinearImpulse para permitir al usuario empujar la nave hacia adelante en la dirección que la nave está enfrentando.
El método acepta estos argumentos que se aplican a los barcos X e Y para mover el barco al nuevo destino. El truco consiste en descubrir qué necesita la nueva X e Y en función de la rotación / dirección que apunta la nave.
ship:applyLinearImpulse(newX, newY, player.x, player.y)
¿Alguien hizo esto o tiene una sugerencia sobre las matemáticas que resolvería esto?
gracias
Ok ... unos 5 minutos después de publicar esto, lo descubrí. Aquí está la respuesta
speedX = 0.5 * (math.sin(ship.rotation*(math.pi/180)))
speedY = -0.5 * (math.cos(ship.rotation*(math.pi/180)))
if(event.phase =="began") then
ship:applyLinearImpulse(speedX, speedY, player.x, player.y)
end