FORO
CONTACTO
anterior siguiente
QUEST 3D: LÓGICA

DESCARGAR EL MATERIAL

Analizar el siguiente programa:

Lo encontrareis en el material descargado, pero os animo a que lo programeis vosotros desde cero.

Se trata de una escena simple como la anterior, pero el cubo es ahora un numero que cuenta rápidamente de cero a cien.

DX8 3DText, es un objeto especial que nos permite poner en la escena cualquier texto en 3D:

La caja Text to convert to 3d text, nos permite escribir cualquier cadena de texto.

Pero nos interesa que este texto sea el resultado de un bucle:

El objeto lupping timer necesita tres cajas de tipo value en sus pines inferiores. La primera (izquierda) es el valor incial de cuenta, la segunda el valos inicial de cuenta, y la tercera, el valor de incremento en la cuenta. En el ejemplo, es un valor especial: TickCount. Este valor depende de la velocidad de proceso de tu ordenador. Esto nos garantiza que, la velocidad de cuenta será siempre la misma en cualquier ordenador. Esta caracteristica es escencial en los juegos. Debeis regular todos los valores de inclremento mediante tickcounts para garantizar que el juego es "jugable" en cualquier ordenador, y que no variará la velocidad de juego según lo potente que sea el ordenador.

El valos del looping timer, se convierte a texto mediente la caja "value to text", y se pasa al objeto text3D.

El siguiente ejemplo tiene más lógica asociada:


Dos contadores. Uno es el mismo que en el anterior ejemplo. El segundo contador, solo se incrementa, cuando el primero toma el valor 100.

La lógica reside en la instrucciñon IF. Fijaros que el IF, es directamente llamado por el start3Dscene. IF no es un elemento renderizable (no es una camara ni una luz ni un objeto 3D). En general, la logica (instrucciones IF y derivadas), se coloca despues del render, directamente ejecutada por el start3dscene.

La primer aparte del if, es una experesion booleana (verdadero/falso). Esa expresión se forma en la caja expresionvalue. Este tipo de caja se usa para realizar todo tipo de operaciones aritmeticas. Pulsando dobre click sobre ella, veremos el editor de expresiones.
En un lenguaje de programación tipo BASIC, la funcion condicional que hariamos sería:
if (loopingtimer del primer contador == 100) then valor=valor +1
Eso es lo que vemos en la imagen de al lado, en forma quest3d.
Observar la forma especial de la caja loopingtimer. Se trata de un "shortcut" del loopingtimer que da valores al primer contador (el que va de 0 a 100). Se puede crear unshortcut de este loopingtimer, pulsando sobre él con el boton derecho, y elegiendo "create shortcut". Crea una caja shortcut como la que vemos en la imagen, que podemos usar igual que si usaramos el loopingtimer original. No es obligatorio usar los shortcuts. Podriamos haber enlazado directamente el loopingtimer del primer contador, pero emborronaría mucho el programa. Queda más limpio usando el shortcut.
Fijaros en el triangulo que hay formando en "then"del IF.
SetOtherValue sería el igual de la expresión "valor=valor+1".
Expresión Value, es el +1
Y value, contiene la variable Valor que se va incrementando.

Este valor es el que se pasa al segundo contador.

 


Autor: Javier Marco

anterior siguiente
 

Novedades

Realidad Virtual
Quest 3D
Modelado 3D
Iluminación Giles
Conway's Game of Life

Stereoscopía
Foto 3D

Internet
HTML
Dreamweaver
JavaScript
ASP

 

 
Hagaloustedmismo
Contacte en : hagaloustedmismo@wanadoo.es
Phohibida toda reproducción total o parcial sin permiso del autor