Paso 7: Construcciones juego - juego de lógica - colisión detección aplicación
Cuando se trabaja en el espacio 2-dimensional, la aplicación es realmente un poco más simple. En lugar de tener un bucle de comprobar cada posible punto tangente de objetos o bordes, control a más de dos puntos serán suficiente en cada caso.Centrándose en los bordes superior e inferior, (x, 0) y (x, Y - s) son los puntos de tangencia sólo posibles, donde 0 < = x < = x. Recuerde que cada objeto está representado lógicamente por un par ordenado que es su esquina superior izquierda. Si la ubicación de la bola es (bx, by) y by= 0, entonces la bola es tangente al borde superior de la pantalla. Esto requiere sólo una comparación para averiguar cuándo cambiar al estado hacia abajo. Además, si by = Y - s, entonces las necesidades de la bola para cambiar su estado a moverse hacia arriba.
Los bordes izquierdos y derecho son igualmente simples. Recordar que (0, y) y (X - s, y) son los puntos de tangencia posible, donde 0 < = y < = Y. El siguiente paso es comparar bx a 0 y X - s. Si bx es igual a cualquiera de estos valores, se ha producido la condición puntuación. Es probable que la bola se reiniciará para continuar el juego.
El conjunto final de los casos, cuando la bola choca con la paleta, es solamente un poco más difícil. Que (px, py) ser la ubicación actual de la paleta. Centrándose en la paleta izquierda, la primera cosa a comprobar es el correcto coordenadas x. Para la paleta izquierda, todos los posibles puntos de tangente vertical Acuéstese (px + w, y), donde 0 < = y < = Y. lógicamente, si px + w = bx, entonces puede ocurrir una colisión. Hay algunos otros puntos a verificar.
El siguiente paso es comparar las coordenadas y. Gráficamente, una colisión ocurre exactamente cuando cualquier pixel de la bola es entre los bordes superior e inferior de la paleta. En la sección anterior en la detección de colisión, todos los puntos posibles de la tangentes pueden describirse como todos puntos entre (px + w, py) y (px + w, py + h) Si h es la altura de la paleta. En este punto, es posible simplificar el algoritmo al comparar solamente dos puntos. Si la esquina superior izquierda o en la esquina inferior izquierda es tangente a la paleta, entonces debe existir al menos un punto de la bola que se parece visualmente es chocar con la pala. Revisando estos dos puntos, el algoritmo verifica todos los puntos en el lado izquierdo de la bola implícitamente. La paleta derecha funciona de manera similar, excepto los puntos a verificar son las esquinas de la parte superior y parte inferior derecha de la bola, encontrado por (bx + s, by) y (bx + s, by + s).
Cuando se implementa la detección de colisiones, importa el orden de las comparaciones. Cálculos y, por tanto tiempo, pueden guardarse por control de los puntos salientes en un cierto orden. Tomemos, por ejemplo, la paleta izquierda. Supongamos que las coordenadas y se revisaron en primer lugar en el algoritmo. Por naturaleza, se trata de una expresión complicada en muchos lenguajes de programación. Después de esta expresión está marcada, el siguiente paso sería comparar las coordenadas de x. En tiempo de ejecución, puede ser probable que el jugador siga la bola cerca a lo largo del plano vertical, por lo que la primera comparación será true por lo menos un par de veces durante el juego, incluso cuando el balón está en el otro lado de la pantalla. La expresión de la coordenada x, sin embargo, será cierto exactamente una vez para unos cuantos fotogramas. Si las comparaciones se voltea, el cálculo de coordenadas y costoso puede guardarse para ser utilizado solamente exactamente cuando sea necesario, ya que podría pasar a ser cierto algunas veces cuando no es necesario.
Por lo tanto, la detección de colisión para las paletas se verá algo como esto:
1. comprobar si bx = px
2. Compruebe si by < = py y by < = py + h, o si by + s < = py y by + s < = py + h
3. cambiar el estado de la bola
Cada paso subsecuente debe ser true para continuar por el otro. Las colisiones de borde de pantalla funcionan exactamente como se describe, puesto que hay solamente un solo punto a comprobar.