240 likes | 446 Views
Desarrollo de juegos de video Aprendiendo a programar en C# de manera divertida Sesión 5: Transformación y colisión de sprites. edgar.sanchez@logicstudio.net. Objetivos de esta serie. Dar a los participantes una introducción a algunos de los conceptos fundamentales del desarrollo de juegos
E N D
Desarrollo de juegos de videoAprendiendo a programar en C# de manera divertidaSesión 5: Transformación y colisión de sprites edgar.sanchez@logicstudio.net
Objetivos de esta serie • Dar a los participantes una introducción a algunos de los conceptos fundamentales del desarrollo de juegos • Introducir la programación con Visual C# 2005 Express Edition, el nuevo IDE (ambiente de desarrollo integrado) de Microsoft para programadores principiantes
Visión de esta sesión • Sesión 5/8 – Transformaciones, colisiones y velocidad en los sprites • Transformación • Colisión • Velocidad
Transformaciones • Traslaciones • Rotaciones • Escalamiento
Traslaciones • Una transformación de traslación se aplica a un objeto reposicionándolo • En esencia, moviéndolo de una coordenada a otra a lo largo de una línea recta
Traslaciones • tx y ty se denominan las distancias de traslación a lo largo de los ejes x e y • T(tx,ty) es llamado el vector de traslación
Rotaciones • Las rotaciones rotan un punto a lo largo de una ruta circular • Para especificar una transformación de rotación necesitamos: • Un ángulo • Un punto pivote (referencia para la rotación) • Un eje de rotación (En 2D, el eje es perpendicular al plano x-y, o sea el eje z) • Especificar un ángulo de rotación positivo (contra agujas de reloj) o negativo (agujas de reloj)
Rotaciones • Nótese como un ángulo de rotación positivo rota el punto contra agujas de reloj y un ángulo de rotación negativo rota el punto a favor de las agujas de reloj
Escalamiento • El escalamiento altera el tamaño de los objetos • En 2D, se requiere dos factores de escalamiento, sx y sy • Estos factores escalan al objeto en las direcciones x e y • El escalamiento se hace multiplicando las coordenadas x-y de cada vértice del objeto por sus factores de escalamiento • Por ejemplo, si tenemos el vértice en (x,y), lo escalaríamos de esta manera: x’ = sx ● x y’ = sy ●y • Si sx = sy tenemos un escalamiento uniforme
Colisión rectangular • Cada cuadro es una imagen rectangular • El rectángulo define los límites del sprite • Calculando las posiciones de dos sprites (rectángulos), se puede determinar si hay una colisión
Detección de una colisión o intersección • El límite de la primera caja limitante está determinado por L=1, B=1, R=3, T=3 • El límite de la segunda caja limitante está determinado por L’=2, B’=2, R’=4, T’=4 • Hallar lo siguiente: • Max(L, L’) = Max(1,2) = 2 • Max(B, B’) = Max(1,2) = 2 • Min(R, R’) = Min(3,4) = 3 • Min(T, T’) = Min(3,4) = 3
Detección de una colisión o intersección • Las dos cajas limitantes se intersecan si: • Max(Max(L, L’) - Min(R, R’), Max(B, B’) - Min(T, T’)) <= 0 • Max(2-3, 2-3) <= 0 • Max(-1, -1) <= 0 • -1 <= 0, luego hay intersección Las dos cajas limitantes se intersecan y forman un nuevo rectángulo: L=2, B=2, R=3, T=3
Detección de una colisión o intersección • El límite de la primera caja limitante está determinada por: L=1,2, B=1, R=2,8, T=2,6 • El límite de la segunda caja limitante está determinada por: L=3,6, B=3, R=5,3, T=4,5 • Encontrar lo siguiente: • Max(L, L’) = Max(1,2, 3,6) = 3,6 • Max(B, B’) = Max(1, 3) = 3 • Min(R, R’) = Min(2,8, 5,3) = 2,8 • Min(T, T’) = Min(2,6, 4,5) = 2,6
Detección de una colisión o intersección • Las dos cajas limitantes se intersecan si: • Max(Max(L, L’) - Min(R, R’), Max(B, B’) - Min(T, T’)) <= 0 • Max(3,6 – 2,8, 3 – 2,6) <= 0 • Max(0,8, 0,4) <= 0,8 • 0,8 > 0, luego no hay intersección Las dos cajas limitantes no forman un nuevo rectángulo puesto que el resultado es positivo
Sistemas de coordenadas diferentes • Un sistema de coordenadas de pantalla tiene la parte superior izquierda en (0, 0):
Sistemas de coordenadas diferentes • La misma ecuación de la sección anterior se aplica con las siguientes observaciones: • Nada cambia con respecto a la izquierda y derecha • Puesto que el techo es menor que el fondo: • Max(B, B’) debe convertirse en Min(B, B’) • Min(T, T’) debe convertirse en Max(T, T’) • Así que la ecuación final es: • Max(Max(L, L’) – Min(R, R’), Min(B, B’) – Max(T, T’)) <= 0
Velocidad • El vector velocidad V(x, y) describe la velocidad y la dirección de un objeto en movimiento • Velocidad • La velocidad es la magnitud de V(x, y) • Ejemplo: • Dirección • Los vectores unitarios son vectores que tienen longitud uno y se usan para indicar la dirección • Ejemplo: uv(x/L, y/L) dónde L es la distancia desde el origen
Velocidad • Dirección de un sprite usando coordenadas vectoriales • Obtener la longitud L del vector (x, y) • El vector unitario es: • X = x/L • Y = y/L • Usando el sistema de coordenadas descrito anteriormente • X = x/L • Y = -y/L
Resumen de la sesión • Transformación, colisión y velocidad de los sprites • Transformación • Colisión • Velocidad
¿Deseas aprender más? • DigiPen Institute of Technology ofrece una variedad de vías para explorar una carrera en el desarrollo de juegos de video: • La serie original de webcasts sobre desarrollo de juegos - Realizada en mayo del 2005. Se puede ver en http://www.microsoft.com/events/series/msdnvideodev.mspx • El código de esta sesión está en http://www.digipen.edu/webcast/ • Talleres de verano – Series de clases introductorias en programación de juegos, producción de animaciones 3D y robótica. Más información en http://workshops.digipen.edu • ProjectFUN Distance Learning – DigiPen tiene cursos en línea impartidos por sus instructores. Más información en http://projectfun.digipen.edu
Preguntas y respuestas • Proponer preguntas usando el botón “Ask a Question” • No te olvides de llenar la encuesta • Para webcasts futuros y pasados (en inglés) http://www.microsoft.com/webcasts • Para webcasts futuros y pasados (en castellano) http://www.microsoft.com/spanish/msdn/latam/video • Esta serie de webcasts está grabada en http://www.microsoft.com/spanish/msdn/latam/video/academic.asp • Este webcast fue presentado usando Microsoft Office LiveMeeting. Se puede obtener una prueba de 14 días gratuita en http://www.microsoft.com/presentlive
¿Dónde se puede obtener MSDN? • Llenar la encuesta al final del webcast y pedir a un representante de Microsoft que le contacte • Convertirse en un suscriptor de los CDs/DVDs de MSDN en http://msdn.microsoft.com/subscriptions
Control del jugador de los sprites Nos vemos la próxima semana para…