plugin mobile lua gaming

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