TGB/MiniPlatformerTutorial/Spanish

From TDN


Contents

Basic Platformer mechanics in 100 lines of script or less

La premisa de este manual de instrucciones es proveer un set rápido y sin dolor y de paso introducir los mecanismos básicos de un juego de tipo "platformer" en TGB. Todo esto en menos de 30 min y bajo 100 lineas de código

Setting up the Project

Para comenzar , intervenir quirúgicamente a TGB (dando un clic sobre el icono TGB en su parte superior de un escritorio)

Image:1-1_newProject.png

Image:1-2 newProject.png

Figure 1.1Figure 1.2

Para empezar nuevo proyecto, select "New Project…" from the File menu. Cuando usted hace esto , el Project Nuevo diálogo aparecerál llamar a este proyecto "miniPlatformer" (Figure 1.2). Esto criará al constructor ecuánime (Figure 1.3).

Image:1-3_levelBuilder.jpg
Figure 1.3


Ahora salvo el proyecto , esto creará la estructura del directorio de proyectos dentro de su carpeta de / juegos TGB

Importing Art

Es hora de iniciar añadir el contenido que usaremos en nuestro platformer. Porque tratamos de conservar cosas simples sólo añadiremos dos archivos de imagen para el proyecto. Copiar dos imágenes para su ./games/miniPlatformer/data/images folder (Figure 2.1) (Figure 2.2).

Image:Player.png
Figure 2.1

Image:MiniTileMap.png
Figure 2.2

Con eso hecho somos ahora en condición de importar esas imágenes en el LevelBuilder. Click the "Create a new ImageMap" icon on the right sidebar (Figure 2.3). Usted será advertido para seleccionar entre las dos imágenes que añadimos a nuestra carpeta de imágenes. Select the "MiniTileMap.png" file from the list. Usted será advertido para seleccionar entre las dos imágenes que añadimos a nuestra carpeta de imágenes.La b > Click el </b> del botón "selecto" para traer a colación el diálogo del Constructor De Imagen.

Image:2-3 addImageMap.png
Figure 2.3

Image:2-4 imageSelect.png
Figure 2.4

On the Image Builder dialog change the Image Mode to "CELL" Usted pondrá cuidado cómo distancia éste bastante bien las tejas en cuatro trozos separados (Figure 2.5). Esto será importante más tarde cuando vamos a construir nuestro mapa de la teja.

Image:2-5 cell.png
Figure 2.5

Repeat the process for "Player.png", adding it as a new image map and then picking "CELL" for the Image Mode. Esto será importante más tarde cuando vamos a construir nuestro mapa de la tejaPara concentrarse que necesitamos para > la edición de la < b las propiedades "Width de la célula" y "Height de la célula" así es que ambos lean "128"Para concentrarse que necesitamos edit the "Cell Width" and "Cell Height" properties so they both read "128" (Figure 2.6).

Image:2-6 cellSize.png
Figure 2.6

Creating Animation

Esto será importante más tarde cuando vamos a construir nuestro mapa de la tejaSonPara concentrarse que necesitamos

  1. playerRun
  2. playerJumpUp
  3. playerJumpDown
  4. playerStand

Algunas de estas animaciones sólo tendrán marco del mismo, pero usted verá cómo podríamos añadir fácilmente más. Los alquileres comienzan con la animación Andada desde que es lo más interesante. Comience por b> haciendo clic lo "cree a un Animation nuevo" icono </b> (la Figura 2.7). En el diálogo Selecto Source eso aparece escogen "PlayerImageMap" y chasquido "uso Selected ImageMap" (la Figura 2.8). Después de que usted será regalado el diálogo del constructor de animación. Aquí usted puede arrastrar marcos del imageMap encima de línea de tiempo de animación.

Image:2-7 addAnim.png
Figure 2.7

Image:2-8 pickMap.png
Figure 2.8

Algunas de estas animaciones sólo tendrán marco del mismo, pero usted verá cómo podríamos añadir fácilmente más. Los alquileres comienzan con la animación Andada desde que es lo más interesante. Vea con antelación la animación para ver si parece intacta y luegoEn el diálogo Selecto Source eso aparece <b> escogen "PlayerImageMap" y chasquido "uso Selected ImageMap" (la Figura 2.8). save the animation as "playerRun".

Image:2-9 anim.png
Figure 2.9

Las animaciones restantes se forjan asimismo excepto que sólo tienen marco del mismo de animación (en la tuya proyecta que usted podría añadir más). La lista de debajo muestra qué animaciones para crear y lo que tiende una celada a asignarlas.

  1. playerJumpDown - Frame 0
  2. playerJumpUp - Frame 1
  3. playerStand - Frame 2

Las animaciones restantes se forjan asimismo excepto que sólo tienen marco del mismo de animación (en la tuya proyecta que usted podría añadir más). Cuando usted está hecho su rollout Vivo Sprites debería mirar algo así como (Figure 2.10).

Image:2-10 sprites.png
<b>Figure 2.10


Building a level

Ahora construiremos un tileLayer sencillo para nuestro nivel. Drag y caída el newLayer.lyr objetan del Tilemaps Rollout encima de su escena (Figure 3.1). Una vez que usted lo ha colocado en la escena usted tendrá que hacerle a la medida a ella un poco hacerle a ella trabajar con el resto de nuestro arteB> Drag y caída el newLayer.lyr objetan del Tilemaps Rollout encima de su escena.

Image:3-1 tileMaps.png
Figure 3.1

Una vez que usted lo ha colocado en la escena usted tendrá que hacerle a la medida a ella un poco hacerle a ella trabajar con el resto de nuestro arte<B> Drag y caída el newLayer.lyr objetan del Tilemaps Rollout encima de su escenaEs más fácil ajustar el tamaño del mapa entero de la teja que individualmente ajustar el tamaño de cada animación del jugador.

Image:3-2 tileSize.png
Figure 3.2

Image:3-3 before.png
Figure 3.3 (before)

Image:3-4 after.png
Figure 3.4 (after)

(Figure 3.3) and (Figure 3.4) show the tileLayer before and after setting the Tile Size.

Una vez que usted lo ha colocado en la escena usted tendrá que hacerle a la medida a ella un poco hacerle a ella trabajar con el resto de nuestro arte<B> Drag y caída el newLayer.lyr objetan del Tilemaps Rollout encima de su escenaEs más fácil ajustar el tamaño del mapa entero de la teja que individualmente ajustar el tamaño de cada animación del jugador.Una vez su hecho su escena debería mirar algo así como (Figure 3.5).

Image:3-5 resize.png
<b>Figure 3.5


Es hora de hacer un reconocimiento del editor Tile Map de TGB. Revolotee su ratón sobre el estrato de la teja en nuestra escena hasta el set de botones de acción aparece por es esquina izquierda máxima. Click the "Edit this Tile map" button (Figure 3.6). This will bring up the Tile Editor in the right sidebar (Figure 3.7).

Image:3-6 editMap1.png
Figure 3.6

Image:3-7 editMap2.png
Figure 3.7

From the Image drop down select MiniTileMapImageMap. Es hora de hacer un reconocimiento del editor Tile Map de TGB. Revolotee su ratón sobre el estrato de la teja en nuestra escena hasta el set de botones de acción aparece por es esquina izquierda máxima.Por defecto la bocateja en el ImageMap es exhibida en el recuadro complementario correcto.

Image:3-8 image.png
Figure 3.8

Click the "Frames" Abotone y seleccione una buena teja de fondo (la Figura 3.9). Esta teja estará detrás de nuestro jugador como él corra alrededor del nivel. Llenaremos el tilemap de estas tejas de fondo y luego nos pintaremos nuestras plataforma que las tejas sobre-coronan.

Image:3-9 bgTile.png
Figure 3.9

Ahora use la "inundación llena" herramienta para llenar al mapa de la teja (la Figura 3.10) de tejas de fondo. Colocar plataforma enlosa que podemos usar al "Paint" herramienta (la Figura 3.11) para pintar tejas individuales de la plataforma encima del tilemap. La diferencia entre plataforma enlosa y tejas de fondo son que el jugador puede chocar con tejas de la plataforma. Select una teja de la plataforma buena de los marcos disponibles y la marca que el seguro "Collision" es dieron jaque a (la Figura 3.12). Esto facultará a nuestro jugador a irse y chocar con estas tejas.

Image:3-10 flood.pngImage:3-11 paint.png
Figure 3.10 (Flood)Figure 3.11 (Paint)

Now "Paint" Algunas tejas de la plataforma encima de la teja hacen mapas para crear una ' base ' que su jugador debe estar de pie.Colocar plataforma enlosa que podemos usar al "Paint" herramienta (la Figura 3.11) para pintar tejas individuales de la plataforma encima del tilemap.
Image:3-12 coll.png
Figure 3.12

Algunas tejas de la plataforma encima de la teja hacen mapas para crear una ' base ' que su jugador debe estar de pie.Colocar plataforma enlosa que podemos usar al "Paint" herramienta (la Figura 3.11) para pintar tejas individuales de la plataforma encima del tilemap. Si no son, entonces asegure la "colisión" checkbox es Comprobada y vuelve a dibujar los Tiles otra vez.

Image:3-13 finished.png
Figure 3.13

Lo último a estar hecho es posibilitar acontecimientos de colisión en el mapa de la teja a fin de que el jugador responderá a las colisiones cuando ocurren. Expándalos a los "Collisions" rollout con la teja que el estrato todavía seleccionó y < que b > colocó las propiedades de colisión para macth la figura debajo</b> (Figure 3.14)

. Image:3-14 coll.png
Figure 3.14

Now save the tile layer as "layer1.lyr" and you are done.


Lo último a estar hecho es posibilitar acontecimientos de colisión en el mapa de la teja a fin de que el jugador responderá a las colisiones cuando ocurren. Expándalos a los "Collisions" rollout con la teja que el estrato todavía seleccionó y <b> colocó las propiedades de colisión para macth la figura debajoSiéntase libre para saltarse para el siguiente [ http://tdn.garagegames.com/wiki/TGB/MiniPlatformerTutorial de capítulo # Creando a _ un _ Player].

Hay por cuando usted no puede querer un fondo enlosado para su nivel, pero en lugar de eso un cuadro estático. TGB le da una parte de formas diferentes para controlar cómo construye usted y exhibe sus niveles. Si usted está descontento con los patrones repetitivos en las tejas de fondo, entonces usted las podría borrar y pudo reemplazar los antecedentes con una imagen estática detrás de nuestro estrato de la teja.

Para hacer esta <b> borran las tejas de fondo que colocamos antes de usándole el "Eraser" herramienta, y permiso de ausencia esas tejas transparentes, como adentroTGB le da una parte de formas diferentes para controlar cómo construye usted y exhibe sus niveles. (Figure 3.15).

Image:3-15 erase.png
Figure 3.15

Importe el siguiente imagen en el proyecto dando un clic sobre el "Create" botón en el recuadro complementario correcto. Añada la imagen en la misma forma que hicimos con el jugador y las imágenes de la teja. Al crear al ImageMap seleccione a "FULL" para el Image Mode.

Image:Background.png

Ahora avance lentamente y descarte la imagen de fondo encima del ecuánime , al principio la imagen aparecerá encima de nuestro estrato de la teja. Para enviarle al chasquido de fondo el "Edit" del botón en el recuadro complementario correcto, luego localizan el cambio de la "escena Object" rollout y la primera capa de enlucido de la imagen Layer para 30 ) (la Figura 3.16) > (el estrato de la primera capa de enlucido es visible adentro. Usted puede tener que ajustar el tamaño de la imagen un bit para poner a ella exactamente detrás del tilemap y miramiento bueno.

Image:3-16 bg.png
Figure 3.16

Creating a Player

La mayor parte del resto de manual de instrucción va a estar gastado escribiendo un guión para las acciones que harán operar nuestro platformer. Sino que antes de que hacemos eso necesitamos añadir un objeto para nuestra escena que será el punto de partida para nuestro jugador. Del "Sprites animado" rollout en el "Create" capítulo de recuadro complementario correctodrag the "playerStand" La animación apagada encima del nivel. Try para situarlo a como si el jugador estaba de pie en una plataforma enlose como se muestra adentro (Figure 4.1).

Image:4-1 player.png
Figure 4.1

Después golpee a "Edit" en el recuadro complementario correcto para cambiar alguna de las propiedades de la animación. Vamos a estar mirando al "Scripting" rollout, queremos hacer a este "playerStand" animación el objeto de la cañería maestra que representa nuestro jugador en letra. Set the Class to "playerClass" and the Name to "pGuy" como mostrar en (Figure 4.2).

Image:4-2 scripting.png
Figure 4.2

Ahora necesitamos cambiar de dirección en alguna detección de colisión para nuestro objeto del jugador. Para hacer esta edición de las colocaciones del "Collision" rollout así es que se parezcan a esos adentro (Figure 4.3).

Image:4-3 coll.png
Figure 4.3

Con eso hecho somos ahora en condición de empezar escribir un guión para el movimiento para nuestro objeto del jugador.

Keyboard Input

s hora de escribir una letra que controlará las acciones de nuestro jugador. Adentro su"[i]./games/miniPlatformer/gameScripts[/i]" folder create a file named player.cs. Abra este archivo con un editor de texto y añada la siguiente función a principios del archivo.

function playerClass::onLevelLoaded(%this, %scenegraph)
{
     $pGuy = %this;
      
      moveMap.bindCmd(keyboard, "left", "playerLeft();", "playerLeftStop();");
      moveMap.bindCmd(keyboard, "right", "playerRight();", "playerRightStop();");
      moveMap.bindCmd(keyboard, "space", "playerJump();", "");
}

Los playerClass::La función onLevelLoaded () es llamada cuandoquiera que un objeto con un tipo de clase de "playerClass" es cargado en la escena. Si usted recuerda cuando editábamos las propiedades Scripting de nuestro jugador, entonces colocamos el campo Class para "playerClass". Eso significa cuándo carga TGB nuestro nivel con nuestra animación del jugador llamará esta función.

La primera línea de la función almacena una referencia para el objeto siendo cargada para un $pGuy nombrado variable global que podemos soler poner notas al jugador en otras funciones.

Después usted puede ver que amarramos lo izquierdo y llaves de la flecha derecha así como también la barra espaciadora, cuando estas llaves son presionadas o soltadas llaman sus funciones correspondientes. Por ejemplo, cuando lo que la llave de la flecha izquierda se presionó, el "playerLeft" función "()" será llamado, cuándo es a la que se lanzó al mercado que el "playerLeftStop" función será llamado "()". Podemos usar estas funciones para rastrear lo que deberíamos estar haciendo el jugador.

Añadamos esas funciones cruciales del manipulador ahora.

function playerLeft()
{
    $pGuy.moveLeft = true;
}

function playerLeftStop()
{
    $pGuy.moveLeft = false;
}

function playerRight()
{
     $pGuy.moveRight = true;
}

function playerRightStop()
{
     $pGuy.moveRight = false;
}

function playerJump()
{

}

Aquí usamos esa variable del $pGuy que inicializamos en playerClass::OnLevelLoaded () para almacenar el movimiento estatal del jugador. Justamente usando el .moveRight y miembros .moveLeft en el objeto del $pGuy, es añadirles como playerClass variables dinámicas, a fin de que las podemos usar más tarde.

Note: Aquí usamos esa variable del $pGuy que inicializamos en playerClass::OnLevelLoaded () para almacenar el movimiento estatal del jugador. Si quisimos tener un juego que pudo incluir más que uno tal objeto, entonces tendríamos que hacer esto parta diferentemente.

Movimiento jugador

¡Gran! Ahora rastreamos los keystates. Pero eso realmente no nos lleva dondequiera en términos de un juego. ¡ Necesitamos que nuestro jugador responda para esos keystates y realmente SE MUDE!

Añadamos una función del manipulador de movimiento para encargarnos de esos keystates.

function playerClass::updateHorizontal(%this)

Usted pondrá cuidado que nuestra función es nombrada con lo " playerClass::" El identificador del namespace. Esto quiere decir que esta función operará con cualquier objeto que es variable de clase es determinado para "playerClass". Lo que hace esta función es comprobar la condición del moveLeft y los miembros de clase moveRight y asigna una velocidad lineal al objeto si encuentra ya sea ser cierta. Si ni salió ni derecho es apresurado, queremos tener la certeza de detener al jugador de mudarnos. Para hacer esto colocamos la velocidad de la x para 0.

Note: We have not defined what happens if both buttons are pressed. Currently, because of the order of our if statements, pressing both keys results in movement towards the right.

Previously we created a playerJump( ) function but it didn't do anything, let's now edit that function and add the following line.

function playerJump()
{
     if(!$pGuy.airborne)
     {
          $pGuy.setLinearVelocityY(-225);
          $pGuy.airborne = true;
     }
}

Ahora lo que ocurre es que a cualquier hora que usted presiona el botón de salto una variable nueva del boolean, "en vuelo" es comprobado. Si "en vuelo" es falso (usted esté en la tierra) y y usted su jugador recibirá una velocidad considerable de la Y directamente arriba. (Echo de ver que los valores negativos de la Y en Torque se mudan arriba en la pantalla.) La variable "aerotransportada" es luego determinada verdadero como justamente hemos saltado.

Para el paso final, queremos continuamente ajustarnos la dirección en la cual nuestro jugador se mueve basado en qué la condición las llaves están adentro. Para hacer esto necesitamos llamar una función updateMovement () todo el tiempo. Add lo siguiente funciona hasta el fin de suplayer.cs file.

function PlatformerSceneGraph::onUpdateScene()
{
     if (isObject($pGuy))
          $pGuy.updateMovement();
}

Adicionalmente usted necesitará nombrar su objeto de juegos SceneGraph "PlatformerSceneGraph" editando al "Name" textbox en el rollout Scene Graph Scripting. Usted puede ganar acceso a este rollout entrando en modalidad de edición sin cualquier escena que los objetos seleccionaron.

Esto maniobra el acontecimiento del updateScene del t2dSceneGraph, el objeto básico responsable para manejar la apariencia de nuestro juego. Cada tiempo actualiza que queremos nuestro movimiento actualizado así es que llamemos updateMovement () aquí. ¡Sino que la espera por minuto! No hemos definido a updateMovement () aún. Add la función updateMovement () justa debajo de la función updateHorizontal ().

function playerClass::updateMovement(%this)
{
     %this.updateHorizontal();
}

updateMovement( )Es una función importante. En versiones previas de este manual de instrucción se volvió envejecido y difícil leer. Conservamos el código limpio y sostenible usándolo como un repartidor para más funciones específicas.

Estamos justamente ocupados en condición de probar nuestro código de movimiento por primera vez. Antes de eso, sin embargo, necesitamos decir a ellos TGB que cargue nuestro archivo de player.cs cuando ejecutamos el juego. Hacer eso localiza los game.cs archivan en la misma carpeta como su archivo de player.cs. Open el archivo de game.cs y añade la siguiente línea para la parte superior de la función del startGame.

 exec("./player.cs");

Cuando usted está hecho la función del startGame debería mirar algo así como lo siguiente.

function startGame(%level)
{
      exec("./player.cs");

      // Set The GUI
      Canvas.setContent(mainScreenGui);
      Canvas.setCursor(DefaultCursor);
   
      moveMap.push();
   
      if( isFile( %level ) || isFile( %level @ ".dso"))
            sceneWindow2D.loadLevel(%level);
}

Para que TGB cargue el archivo por primera vez tendrá para ser vuelto a arrancar. Ahorre su trabajo si usted no hace ya y reabrir el de proyecto Platformer. Una vez que usted ha hecho eso usted está listo a probar su código. Probar su demo ras con ras golpeado lo "Play" button in TGB (Figure 5.1).

Image:5-1 play.png
Figure 5.1

Después de divertirse que usted pondrá cuidado algunas cosas no tiene toda la razón. El jugador desliza izquierda y enmiende, pero a él no le parece caer. Entonces si usted salta, entonces él justamente vuela fuera de la pantalla y nunca regresa. Parece que necesitamos añadir un poco de gravedad para halarle hacia abajo tierra firme. Afortunadamente TGB tiene uno basado en el sistema de medicamentos para manipular estas cosas. Seleccione a su jugador y vaya al "Edit" etiqueta en el recuadro complementario, > la edición los "Physics" trasfondos rollout así es que se parecen a lo siguiente (Figure 5.2).

Image:5-2 grav.png
Figure 5.2

Usted pondrá cuidado que la Constante Y Force ha estado colocada para 100, ésta aplica una 100 fuerza de la unidad abajo en nuestro jugador todo el tiempo. Esto actúa como la gravedad empujándole hacia atrás abajo de después de que él se levanta de un salto. Son también qué empujones él abajo de cuando él camina fuera del borde de una plataforma. La fuerza Scale justamente aumenta el efecto de la gravedad en el jugador haciendo la ecuación un pequeño menos floaty y un poco más como un salto. Usted puede jugar con estos hasta que usted los trae cómo le gusta a usted.

Siga adelante y pruebe el nivel.

De buenas a primeras usted echa de ver que su objeto del jugador se reacomoda bastante bien encima del piso cuando el nivel comienza. Entonces cuando usted salta o camina fuera de una plataforma él cae hacia atrás abajo en conectar a tierra como usted esperaría. Sino que otras cosas extrañas ha comenzado a ocurrir. En primer lugar usted sólo puede saltar una vez. Esto está porque usted aún no detiene la bandera "aerotransportada" parafalse, Poniendo a cero la habilidad saltadora. Algunas veces siente como el jugador atraviese andando barro y cuándo usted entra andando en una esquina que el jugador va dando tumbos alrededor de raramente y puede atascarse. La razón para esto es que TGB tiene una física muy sofisticada el modelo, simula fricción y demás tipo de otras Fuerzas Armadas que realmente no queremos manipular. Realmente queremos los medicamentos gravitacionales para funcionarnos cuando el objeto del jugador está de la apariencia, pero no cuando está en el andar esmerilado aproximadamente.

To fix this we are going to have to do a little scripting and actually take care of vertical movement.

Open up the player.cs file and append the following code to the end of the updateMovement( ) function

     %this.updateVertical();

Después usted necesitará añadir la letra para la función updateVertical (). No es intimidado por el código. Es de hecho franca bonita > Add la función updateVertical () justa debajo de la función updateHorizontal ().

function playerClass::updateVertical(%this)
{
     %yVelocity = %this.getLinearVelocityY();

     if(%this.airborne)
     {
          %this.setLinearVelocityY(0);
          %collision = %this.castCollision(0.005);

          if(%collision !$= "")
               %this.setLinearVelocityX(0);
     }

     %this.setLinearVelocityY(100);
     %collision = %this.castCollision(0.005);
     	
     if(%collision $= "")
     {
          %this.airborne = true;
          %this.setConstantForceY(100);
     }
     else if(%yVelocity < 0 && %this.airborne)
     {
          %this.setConstantForceY(100);
     }
     else
     {
          %this.airborne = false;
          %this.setConstantForceY(0);
     }

     %this.setLinearVelocityY(%yVelocity);
} 

Repasemos este capítulo de función por el capítulo. La primera cosa que hacemos es almacenar la velocidad coetánea de la Y del jugador en una variable local (delineada por el signo de por ciento en parte delantera de yVelocity). Luego seguimos adelante hacia el siguiente capítulo:

     if(%this.airborne)
     {
          %this.setLinearVelocityY(0);
          %collision = %this.castCollision(0.005);

          if(%collision !$= "")
               %this.setLinearVelocityX(0);
     }

Este bloque de código y su la posición en la letra soy sumamente importante. Primer, que inspeccionamos para ver si estamos en el aire. Si es así, ajustamos la velocidad de la Y para 0. Esto nos deja hacer una comprobación de colisión usando a castCollision () para ver si entramos corriendo a cualquier cosa en seguida bien o se deja de nuestras tomas del jugador . castCollision () un solo parámetro que define hasta dónde en el futuro inspeccionar. Porque queremos usar esta colisión experimental para decidirnos cuando a desactivar nuestra velocidad horizontal cuando estamos en lo correcto al lado de una pared o una plataforma, usamos una unidad muy pequeña de tiempo.

Si encontramos una colisión directamente para la izquierda o bien de nosotros nosotros quiera colocar nuestro linearVelocityX para 0 del que entretenernos repetidamente forzando la entrada a la pared y potencialmente atascándose. (Nota: Este código ayuda a arreglar un asunto de ascenso de la pared que los usuarios de anteriores versiones de este baquiano tutorial.) El resto de updateVertical () maniobrará los trasfondos de medicamentos que gobiernan movimiento vertical.

Ahora hacemos lo propio con castCollision () para la dirección de la Y: Por ahora ajustamos una velocidad grande de la Y para probar y sede si golpeamos cualquier cosa debajo de nosotros. Ahorramos la colisión, si cualquier, en la "colisión" local variable y múdese en lo siguiente si la declaración:

     if(%collision $= "")
     {
          %this.airborne = true;
          %this.setConstantForceY(100);
     }

Si no hay colisión resultando de castCollision () luego se sabe que el jugador está en el aire y es cronometre para cambiar de dirección en la gravedad. Para hacer esto colocamos en vuelo true and set the Constant Y force to 100.

If there is collision then we move into the else-if:

     else if(%yVelocity < 0 && %this.airborne)
     {
          %this.setConstantForceY(100);
     }

Este bloque revisa en busca de que movimiento en lo arriba dirección y vean si estamos en el aire. Si así es que cambiamos de dirección en la gravedad. Sin este código usted podría entrar andando en una pared, salto, y lancha directamente levantada hasta que la pared se acabase.

Si nosotros encontramos una colisión y no acertamos a estar de la causa especial por encima de luego se sabe que estamos en tierra firme. Per se "en vuelo" para falaz y desactivamos gravedad sedimentándose lo Constant Y force to 0.

     else
     {
          %this.airborne = false;
          %this.setConstantForceY(0);
     }

En la última línea de la función se sabe que hemos terminado con nuestras pruebas y simplemente podemos restaurar la velocidad de la Y. El movimiento real será manipulado por el motor de medicamentos según el constantForce que colocamos a todo lo largo de updateVertical ().

Now go and test the level.

¡Gran, que estamos casi hechos! Algunas veces el TGB puede obtener un poco de mal hecho en eso los cálculos de medicamentos. Esto es propenso a aparecer cuando dos objetos se arriman realmente. Para un montón de sistemas de juego éste estaría un problema no resuelto en el software principal, pero TGB provee una forma fácil que nosotros debemos decir la física en el jugador para ser algo más cuidadosos.

Abra el archivo de player.cs otra vez y localice los playerClass::La función del onLevelLoaded. Al final de esta < b de función > anexe la siguiente línea de código</b>.

     %this.setCollisionMaxIterations(2);

Esto dice la física para comprobar un poco más cuidadosamente al colisiones calculadoras en nuestro jugador. Siga adelante y pruebe el nivel otra vez.

(Note: Usted puede poner cuidado, a merced de cómo construyó usted su nivel, que el jugador algunas veces se atasca ir sin embargo una abertura estrecha que al principio aparece él debería calzar a través. Ésta está porque la caja que salta pues nuestra jugadora es una caja grande. Para centrar este problema puede revisar ustedes la caja que salta del jugador y hay doctor en TDN eso le dice a usted qué tan que haga esto.)

Impresionante, ahora la tipa brinca aproximadamente y no hay pegajosidad.

Uno a última hora antes de que cerremos este capítulo. Si usted resuelve incluir rampas o superficies inclinadas en su platformer, entonces usted puede experimentar brincos extraños cuándo olvidándose de una llave de movimiento mientras trepando la rampa. El siguiente código se concentrará esto y esperanzadoramente le dará una idea de cómo iniciar a pensar en problemas nos resueltos en el software similares que usted puede encontrar más tarde. Añada lo siguiente para lo último si la declaración adentroupdateHorizontal( ).

          if(!%this.airborne)
               %this.setLinearVelocityY(0);

Este código asegurará que nos congelemos completamente cuando dejamos el empuje de movimiento teclea en una rampa. Enfríese. El tiempo al que traer la pantalla rollo de papel con nuestro jugador.

Scrolling Camera

Normalmente un tema como esto precisaría que es propio capítulo, así es que le reporté uno facilitar encontrar de la tabla de contenidos. Pero el hecho de la materia es que TGB hace enrollar la cámara realmente fácil. Todo lo que tenemos que hacer es encaramarnos en la cámara para nuestro jugador y eso puede haber terminado con una sola línea de código. Lo haremos en dos para el bien de la claridad. Añada el siguiente rayado de código hasta el fin de playerClass::onLevelLoaded()

   %force = 20;
   sceneWindow2D.mount($pGuy, "0 0", %force, true);

Aquí decimos el propósito del sceneWindow2D para montarnos en nuestro $pGuy del jugador. "0 0" son la x y offsets y de ese monte, y %force es la fuerza que puede ser ejercida jalando la cámara aproximadamente. Lo colocamos para 20, pero usted podría colocar lo que fuere que usted quiere. Los números inferiores quieren decir que la cámara lentamente seguirá al jugador aproximadamente, números más altos quieren decir que se adherirá muy rígidamente para el jugador.

Siga adelante y experimente el nivel, usted debería encontrar la cámara mudándose bastante bien con el jugador.

Animating the Player

Así es que ahora que tenemos todos los mecánicos trabajando, eso el tiempo para hacer a nuestro jugador anima. Él se ve un poco mudo corredor alrededor del nivel en su encaramiento del marco de posición bien. Para animar según el movimiento desplegado en pantalla, necesitaremos saber cómo se mueve nuestro jugador actualmente. Add the following function to the player.cs file right above PlatformerSceneGraph::onUpdateScene().

function playerClass::setCurrentAnimation(%this)
{
     %xVelocity = %this.getLinearVelocityX();
     %yVelocity = %this.getLinearVelocityY();

     if(%xVelocity > 0)
     {
          %this.setFlip(false, false);
     }
     else if(%xVelocity < 0)
     {
          %this.setFlip(true, false);
     }
}

El setFlip lanza la orientación de nuestro objeto del jugador en la X y las instrucciones Y. Cuando somos conmovedores a la izquierda queremos lanzar el arte desde todo nuestro arte está de cara a bien. Cuando nos mudamos a la derecha que queremos destejer ese capirotazo así es que llamamos setFlip otra vez con falso para lo deshace.

Now lets add the jump animation.

Anexe el siguiente código hasta el fin de lo setCurrentAnimation( ) function.

     if(%this.airborne)
     {
          if(%yVelocity < 0)
          {
               %this.playAnimation(playerJumpUp);
          }	
          else
          {
               %this.playAnimation(playerJumpDown);
          }
     }
     else
     {
     }

Este código es sumamente franco. Inspeccionamos que estamos en el aire. Si es así, comprobamos la dirección de nuestra velocidad vertical y animamos apropiadamente. En caso de que no, no hacemos ninguna cosa ... pero.

¡La única cosa a la izquierda para animar es la posición y echando a andar! Los alquileres se encargan de eso rellenando esa declaración distinta vacía. <La b > Puso el siguiente código dentro de los corchetes de la declaración distinta vacía que agregamos arriba.</b>

          if(%xVelocity == 0)
          {
               %this.playAnimation(playerStand);
          }
          else
          {
               if(%this.getAnimationName() $= "playerRun")
               {
                    if(%this.getIsAnimationFinished())
                    {
                         %this.playAnimation(playerRun);
                    }
               }
               else
               {
                    %this.playAnimation(playerRun);
               }
          }

Si cumplimos este código luego nosotros estamos faltante sobre el terreno y para animar correctamente. Este código colocará la animación en ejecución en que nuestro jugador basado en la condición del jugador objeta velocidad horizontal coetánea. Primero inspeccionamos para la sede si la jugadora es posición todavía. Si él es, entonces ajustamos la animación para "playerStand". Si él no está de pie todavía luego sabemos, entonces él está en la tierra y corriendo. La primera cosa que hacemos es inspeccionar para la sede si el "playerRun" animación ya juega. Si el animatino ya juega, entonces lo espera para terminar antes de que le dice para jugar otra vez. El IIf que el jugador toca un poco otra animación luego inmediatamente dice la animación andada para comenzar.

Necesitamos llamar esta función de a alguna parte sin embargo. Queremos que la animación para actualizar cuandoquiera que el movimiento actualice así es que añadiremos una llamada para la setCurrentAnimación () para el updateMovement () la función. Append lo siguiente para el fin de la función updateMovement ().

     %this.setCurrentAnimation();

Ahora usted puede jugar su nivel y puede ver su tipo corriendo y brincando por todos lados, todo correctamente animado.

Si todo anda usted es funcionabilidad hecha, básica del platformer adentro alrededor de 100 rayado de letra. Esto le debería dar una buena idea de cómo iniciar a hacer su propio juego del platformer usando a TGB.

Si usted realizó el paso optativo al crear, entonces el nivel que su platformer debería mirar algo así como esto

Image:Finished.png

De lo las condiciones, Advertencias, y donde salir de aquí

Este manual de instrucción diseñado para darle un sentido de qué entra en un platformer muy básico. ¡Si usted ha leído así de lejano que luego usted ciertamente ha aprendido bastante! Esperanzadoramente usted todavía masca ruidosamente en el bit para más.

Este manual de instrucción debería actuar como una junta primaveral para su proyecto, no una plantilla. Hace muchas cosas fluyen pero no hace todo. El manual de instrucción, por ejemplo, no encubre importar superficies inclinadas.

El código en este manual de instrucción estaba escrito con expansibilidad en mente. Las superficies inclinadas ciertamente pueden ser importadas y usadas con el código de este manual de instrucción pero ellas no son perfectas. Usted experimentará algunas rarezas embarazosas que usted es animado para resolver por usted mismo y con la ayuda de la comunidad a través de los foros TGB. Algunas rarezas incluyen a brincar en lo alto de cualquier rampa, movimiento sucio abajo de rampas, y alguna funcionabilidad divertida cuando la izquierda y derecho son el rato en apuros en una rampa. Adicionalmente, usted debe ejercitar cautela extrema cuándo importar su rampa en un nivel tan parejo una discrepancia diminuta en polígonos de colisión entre plataforma y la rampa puede causar su carácter para experimentar una colisión en lugar del movimiento muy fácil. Éste es simplemente un ejemplo de los asuntos en contra del que usted podría abollar arriba al usar este manual de instrucción como una junta que bucea para platformers en TGB.

El caso es que este manual de instrucción no debería ser mirado como un diseño documente para su juego. Lo < yo > Platformer < / > es uno de los géneros más comunes en vídeo jugando y la variedad parece no tener fin. Su llamada del diseño para Sonic da estilo a gameplay con lazos y calzadas irregulares? ¿Está usted tratando de lograr un platformer de estilo del Mario Esque donde las superficies inclinadas continuas son menos frecuentes? O tal vez su diseño de juego le hace pasar a no probado y excitando territorio nuevo.

Lo que fuere que su caso puede ser, usted está animado para tomar lo que aprende usted de este manual de instrucción y corra con él. Si usted se atasca, entonces no dude en preguntar en los foros. La comunidad cultiva cada día y es muy anuente para echarle una mano.

Ahora llegue fuera de aquí y haga su juego!

Mini Platformer Update

- by Wicked Sunny 24.06.2007


Apruébele a nadie actualizado este manual de instrucción por mucho tiempo, así yo sobrepasa mi cabeza para actualizarla.

Muchos noobs adicionándome tuvieron problemas serios con la colisión del polígono del ninja con tejas en este manual de instrucción.

He estado trabajando en eso de últimos 2 días y he encontrado pocas soluciones, no son perfectos pero sino soluciona más de los dolores de cabeza grandes. No soy un programador y por lo tanto no espero escribir un guión para de mi lado, éste es más o menos TGB soluciones basadas.

First the problems

1) If conserve presionando la derecha (o la llave de la flecha izquierda) en contra del lado de la teja, lentamente lentamente el ninja inicia a levantarse hasta que él salta sobre la teja, sin presionar el botón de salto. Literalmente deslizándose sobre la obstrucción.

2) Cuando el jugador salta y toca una pared (más luego una enlosa) algunas veces justamente se apega a la pared.

3) Cuando el ninja se colapsa entre dos la mayoría de tejas (el punto de vista un hoyo) del tiempo se apega a la pared, algunas veces se empareje en el borde de la teja en una manera muy irreal.

Solutions

Image:Scene-object.jpg Image:Scene-object2.jpg

Primero después de hacer su mapa de la teja, NO HAGA UNA SELECCIÓN LA COLISIÓN BOXEA. Sí no vamos a usarlo. :) 

En lugar de eso arrastre el ' objeto de la escena ' de la ventana Others en el menú Create. Es invisible. Ahora escámelo y coloque encima eso bloque sabio de sus tejas (cuál usted quiso como las plataformas) en un estrato diferente luego el mapa de la teja. Usted tendrá que usar muchos de ellos encima de bloques separados de tejas. En la imagen por encima de cada colisión verde el bloque está un objeto separado de la escena. Ahora aplique las cajas de colisión que supuesto aplicáramos en la teja trazan un mapa de en estos objetos de la escena, ahorrar tiempo usted aun puede hacer una copia clónica de ellos.

Esto automáticamente solucionará el primer problema.

La solución ahora y 2 3 se basa en su mayor parte en el bloque de objetos movibles de carácter.


De pie Ninja Sprite usada aquí es un problema grande, siempre cree un diseño de bloque de objetos movibles mucho más directo luego esto.

La razón principal que hinca para la pared está por esta forma y el polígono de colisión apunta esta forma crea.

Usé las siguientes proposiciones de colisión para especialmente aguantando bloque de objetos movibles del ninja -

Image:Ninja-polygons.jpg

Esto tiene ventajas y desventajas - la ventaja es que no se adherirá, sino que una parte de la imagen aparecerá entrando en la teja. Me gustó esto porque lo hizo aparecer un 3d mordido como, pero si usted el wanna lo evita, está seguro, entonces sus bloques de objetos movibles son diseñados correctamente.

Debajo de la imagen es del carácter no engomado, si se adhiere que tendrá bloque de objetos movibles de pie y no saltando sobre animación. Registre la salida lo las proposiciones de colisión en la pierna, están en línea recta exacta, si uno hace resaltar en un ángulo que el ninja podría hincar a la pared. Si su carácter todavía llega hincó juegue con estos puntos de colisión.

Image:Not-sticky.jpg

Éste es el problema de parte del ninja yendo en la teja, sino puede ser solucionado con buen diseño inicial.

Image:Imageintile.jpg

Esto soluciona todos los 3 problemas, una buena lata del diseño de carácter salvo usted parte de dolores de cabeza más tarde con TGB.

El polígono Collision está un poco fastidiado en TGB pero si usted sabe bien escribir un guión para usted puede hacer propiedad personalizada de colisión por el código y puede remover (leo en los foros) el problema. Espero que se componga en 1.5.

Usted fácilmente puede hacer un juego de tipo del mario con esto, o aun cuáles lanzamiento shurikens, pero para la espada utilizadora el ninja que el bloque de objetos movibles necesita estar cambiado.

Traje pocos de las ideas del juego del arrancador del platformer de x Torque. Es muy bueno, ' cómprelo si usted necesita aprender más acerca de los juegos de la plataforma.

Una forma Platforms

by Wicked Sunny 25/06/2007

N . b.- Si usted sabe qué tan hacer esto escribiendo un guión y los gatillos, por favor no haga un intento, entonces esto.

Esto son más de un tiro certero muy para crear una plataformas de forma sin escribir un guión para.

Usted le puede hacer dos formas - tampoco haga una teja nueva (especialmente para esta plataforma sólo) o aplique trasfondos de colisión para el estrato del mapa de la teja entero creado previamente.

Ahora edite mapa de la teja - la caja de colisión del cheque por encima de la imagen de la teja y la marca un polígono cuadrado de colisión cubriendo los bordes de la teja en el menú de edición mismo (marcado por línea verde sobre la imagen de la teja debajo de). Ahora traiga las más bajo dos proposiciones directamente levantadas para las dos proposiciones máximas. Haga seguro el rayado es derecho y un rectángulo muy muy delgado es hecho, es muy difícil como usted no pueda zumbar en el panel de edición, pero pueda hacer un intento.

Image:Tile-editing.jpg

Ahora pinte sobre las tejas que usted quiere saltar hasta el final pero esté de pie sobre la parte superior. Como simple como eso. En la imagen he usado una teja de imagen de la pared para distinguir las únicas plataformas de forma. Otras plataformas están rodeadas del objeto invisible de la escena. Justamente haga seguro las proposiciones de la teja y los objetos de la escena son adentro un verso horizontalmente cuando son colocados al lado.

Image:One-way-platform.jpg

Una forma plataformas tiene una ventaja más - algunas veces al saltar y tratar de alcanzar otra plataforma por el polígono apunta, el ninja se atasca para otras plataformas (especialmente el carel). Tal lata de tejas repuesta por una forma enlosa, a fin de que la próxima vez no se adhiere y cae, cuál usted quiere.

Image:Advantage.jpg

De lo que me he dado cuenta después de parte de experimentar y leer foros es que la forma TGB actualiza sus colisiones causa pocos de los citados anteriormente problemas. Más de la costumbre del ninja de tiempo atásquese, pero repentinamente usted lo encontrará estremecedor en una teja particular, avanzando dando tumbos y saltando más rápido sobre una plataforma de forma o atascándose igualmente. El salto y espalda venida en eso otra vez y surtirá efecto muy bien. Ahora éste es un problema no resuelto en el software pero yo pienso que pocos de los usuarios adelantados lo pueden soslayar usando escribiendo un guión para. No Seguro Acerca De Esto.

También he puesto cuidado es que el polígono dos de arriba apunta de la teja hace la vara ninja (con las proposiciones de colisión que creé por encima de) la mayoría de las veces. La raíz apunta varas pero tal vez una vez en 100 veces. Thats por el que la citada anteriormente ventaja de una teja de forma surta efecto. Si un ninja se adhiere su principalmente porque uno de su punto perseverando en la colisión apunta de la teja. Usted puede comprobar esto habilitando los saltos de colisión asentándose elimine las pulgas de un programa dando y luego jugar el juego.

Image:Collision-bounds.jpg

Por lo tanto trate de usar menos tejas para una plataformas de forma. La imagen de debajo muestra más luego 5 que tales tejas usaron y que ésta está donde mi ninja queda pegado la mayoría de las veces el rato andante en ella. Esta técnica no surte efecto con objetos de la escena sino con trabajos normales de mapas de imagen (de quién es la colisión que apunta es revisado como las tejas arriba) muy bien. Así un bloque de objetos movibles largo de la plataforma puede ser usado en lugar de 5 tejas.

Image:5-tiles.jpg

TGB no es TXB y por lo tanto no puede haber una comparación. Simplemente proveo esta actualización a fin de que más diseñadores de juego prueban hacer plataforma juega con TGB. Justamente no se rinda, manténgase difícil;)

Pronto trataré de dar un enlace de este demo de juego.

"demo

Bien aquí es el enlace del demo. He actualizado como el instalador no fue adecuado, si usted tiene a TGB que este exe operará muy bien, ninguna necesidad para instalarla.


Media:Ninjademo.rar

He hecho pocos cambios -

1) he usado más de mapas de imagen para una plataforma de forma luego mapas de la teja. Su apostador otorgante resulta. He dejado pocos mapas de la teja como adecuadamente a fin de que los usuarios pueden deducir ida de whats incorrectamente. La más alta fila de 4 tejas en la línea recta justa nivelada por encima de mis 5 tejas (por encima de pic) y la fila justas debajo de las 5 tejas, le dará la idea.

2) la única izquierda de problema ahora es actualización repentina de cecina de la animación algunas veces cuando el ninja monta de un salto sobre una plataforma de forma. Ahora su cualquier por la colisión apunta interactuar o por el escribir un guión para animaciones MUY básico usó para el ninja. Ninguna pegadura más ya. Al menos no en mi laptop.

BTW si cualquiera no pudiera saltar fuera del hoyo rebotante, entonces mejor vuelve a arrancar el juego, ningún repeón aún. Si usted alcanza el máximo la mayoría de fila de la teja, usted puede divertirse con bungee saltando de esa altura. :D

Usted puede saltar debajo de una única plataforma de forma por primero saltando a aire luego usando llaves de la flecha para aterrizar en la plataforma inferior.

Por favor si usted tiene preguntas, entonces las soluciones, la retroalimentación, la apariencia pues un poste nombraron a "Mini platformer actualizado en TDN" en foros del soldado raso TGB > quedando echadas a andar. Y el poste sólo allí, así es que le puedo seguir la pista.

Gracias y disfruta demo.