This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
es:orx:tutorials:frame [2012/02/29 05:48 (13 years ago)] – [Detalles] zera | es:orx:tutorials:frame [2020/08/19 21:12 (5 years ago)] (current) – Old content sausage | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tutorial de marco ====== | ||
- | |||
- | ===== Resumen ===== | ||
- | |||
- | Para mas información vea [[main# | ||
- | |||
- | Las propiedades de los objetos como: posiciones, escalas y rotación son almacenadas en las estructura '' | ||
- | Estos marcos estan juntos en la jerarquia de gráficos, lo que significa que las propiedades del marco padre afectarán las propiedades de sus hijos. | ||
- | |||
- | En este tutorial, tenemos 4 objetos que serán vinculados a un padre en común ((un objeto vacío, sin contenido visual)) y un quinto sin padre.\\ | ||
- | Los dos primeros hijos son creados usando las propiedades de objetos de la configuración '' | ||
- | El objeto padre invisible seguira el puntero del ratón. Las teclas "SHIFT IZQUIERDA" | ||
- | Todas estas transformaciones afectaran a los 4 hijos. | ||
- | |||
- | Esto nos muestra una forma fácil de crear grupos de objetos complejos y transformar sus propiedades (posición, escala, rotación, vélocidad...) fácilmente. | ||
- | |||
- | ===== Detalles ===== | ||
- | |||
- | Como en el [[main# | ||
- | |||
- | <code c> | ||
- | |||
- | orxViewport_CreateFromConfig(" | ||
- | |||
- | Luego creamos nuestro objeto padre. | ||
- | |||
- | <code c> | ||
- | |||
- | Definimos en el fichero de configuración '' | ||
- | |||
- | <code ini> | ||
- | ChildList = Object3 # Object4</ | ||
- | |||
- | Así cuando creamos nuestro objeto padre, los dos hijos (('' | ||
- | Esto podiamos haberlo hecho en el fichero de configuración, | ||
- | |||
- | <code c> | ||
- | orxObject_CreateFromConfig(" | ||
- | pstObject = orxObject_CreateFromConfig(" | ||
- | orxObject_SetParent(pstObject, | ||
- | pstObject = orxObject_CreateFromConfig(" | ||
- | orxObject_SetParent(pstObject, | ||
- | </ | ||
- | |||
- | El '' | ||
- | |||
- | Note que cuando creamos y vínculamos manualmente los objetos en el código, es nuestro deber borrarlos luego. En el caso del '' | ||
- | |||
- | A continuación, | ||
- | |||
- | <code c> | ||
- | |||
- | orxClock_Register(pstClock, | ||
- | |||
- | Ahora vamos a echar un vistazo a nuestra función '' | ||
- | En primer lugar, nos aseguramos de que podemos encontrar la posición en nuestro espacio del mundo que corresponde a nuestro cursor del ratón en el espacio de la pantalla.\\ | ||
- | A continuación, | ||
- | |||
- | <code c> | ||
- | { | ||
- | orxVECTOR vParentPosition; | ||
- | orxObject_GetWorldPosition(pstParentObject, | ||
- | vPosition.fZ = vParentPosition.fZ; | ||
- | orxObject_SetPosition(pstParentObject, | ||
- | }</ | ||
- | |||
- | Lo único que queda por hacer es aplicar la escala y la rotación de acuerdo a nuestras entradas.\\ | ||
- | En nuestro caso, definimos las siguientes entradas en | ||
- | [[https:// | ||
- | |||
- | Veamos como las manejamos. Primero, las rotaciones. | ||
- | |||
- | <code c> | ||
- | { | ||
- | orxObject_SetRotation(pstParentObject, | ||
- | } | ||
- | if(orxInput_IsActive(" | ||
- | { | ||
- | orxObject_SetRotation(pstParentObject, | ||
- | }</ | ||
- | |||
- | Y ahora, las escalas. | ||
- | |||
- | <code c> | ||
- | { | ||
- | orxObject_SetScale(pstParentObject, | ||
- | } | ||
- | if(orxInput_IsActive(" | ||
- | { | ||
- | orxObject_SetScale(pstParentObject, | ||
- | }</ | ||
- | |||
- | Es todo! :-) Nuestro '' | ||
- | |||
- | //PD:// | ||
- | |||
- | * // | ||
- | * //Como usamos el DT del reloj para las rotaciones, se beneficiarán de la consistencia del tiempo ((no dependerán de la velocidad de los fotogramas y será el momento-elástico)). Por desgracia, no será el caso para las escalas. (Que suele ser algo que realmente no queremos!)// | ||
- | ===== Recursos ===== | ||
- | |||
- | Código fuente: [[https:// | ||
- | |||
- | Fichero de configuración: | ||