![]() |
|||||
|
USO DE VECTORES PARA EL MOVIMIENTO Ahora vamos a cambiar un poco el esquema tradicional
con que movemos los objetos dentro del ambiente de KPL, se van a empezar a
utilizar los vectores. Para eso se requiere que el objeto que vamos a mover
tenga definido los siguientes atributos: o
Una dirección o ángulo (Ө)
al cual apunta. En el juego Racer2 este se llama Heading. o
Dos variables para almacenar la posición de la cabeza del
vector. En la siguiente figura se muestra el esquema
que se sigue para poder manejar el movimiento:
Para rotar el objeto sobre si mismo se hace lo siguiente: Method RotateCar( Heading As Decimal ) // Se le indica el ángulo al cual quiero llegar y
se le aplica // el ajuste dinámico
respectivo de la velocidad de la animación Jugador1.Heading = Jugador1.Heading + // Se rota el objeto RotateSprite(
Jugador1.Imagen, Jugador1.Heading ) End Method Pero para mover el
objeto una cierta cantidad hacia adelante en la dirección que indica el ángulo
(Ө), se requiere descomponer el vector que
especifica este incremento en sus respectivas componentes X y Y: Method MoveCar() Define
amountOfMovement As Decimal = // Se saca la componente en X del vector de
incremento de la posición Define amountX As Decimal = Cos( Jugador1.Heading * piOver180 ) * // Se recalcula la nueva posición en el eje X del
objeto Define nextX As Decimal = Jugador1.posX - amountX // Se revisa si esta nueva posición es valida If NextX > 0 And NextX < ScreenWidth() – GetSpriteWidth(Jugador1.Imagen) Then Jugador1.posX
= nextX End If // Se saca la componente en Y del vector de
incremento de la posición Define amountY As Decimal = Sin( Jugador1.Heading * piOver180 ) * // Se recalcula la nueva posición en el eje Y del
objeto Define nextY As Decimal = Jugador1.posY – amountY // Se revisa si esta nueva posición es valida If nextY > 35 And nextY < ScreenHeight() – Jugador1.posY
= nextY End If // Se mueve el objeto hacia su nueva posición MoveSpriteToPoint(
Jugador1.Imagen, Jugador1.posX, End Method Algo para tener en
cuenta es que las funciones que calculan el coseno y el seno en KPL trabajan
con Radianes, por tal motivo, se requiere hacer la conversion de grados –que es
la unidad con que estamos trabajando en este juego, porque es más facil de
implementar– a radianes. La función de la conversión es la siguiente:
EJERCICIO FINAL Ahora, después de haber visto todos estos métodos de
animación y de programación de juegos, te encuentras en la capacidad de
desarrollar tu propio juego completamente funcional. Por eso, se propone como
ejercicio final la realización de tu propio juego, el cual debe reunir todo lo
aprendido a lo largo del curso, y puede ser desarrollado en grupos o
individualmente. |
|||||
|
|||||
![]() |
|||||