This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| es:orx:tutorials:clock [2009/08/24 00:02 (16 years ago)] – Added latest changes from Orgos that have been lost in the site transfer iarwain | es:orx:tutorials:clock [2020/08/20 04:11 (5 years ago)] (current) – Old content sausage | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Tutorial de Reloj ====== | ||
| - | ===== Resumen ===== | ||
| - | |||
| - | Vea el [[Object|Tutorial de Objeto]] para más información sobre la creación básica de un objeto. | ||
| - | |||
| - | Aquí vamos a registrar el proceso de llamada de retorno en dos relojes diferentes solo con propósitos didácticos. | ||
| - | Todos los objetos son actualizados desde el mismo reloj. ((El contexto del reloj es además usado aquí solo para demostración)) | ||
| - | |||
| - | El primer reloj corre a 0.01s por tictac (100 Hz) y el segundo corre a 0.2s por tictac (5 Hz). | ||
| - | |||
| - | Sí presionas las teclas ARRIBA, ABAJO y DERECHA, podrás alterar el tiempo del primer reloj. | ||
| - | Este será actualizado al mismo tiempo, pero el tiempo para la llamada de retorno del reloj será modificado. | ||
| - | |||
| - | Esto permite de forma fácil adicionar distorsión al tiempo y tener varias partes de la lógica actualizándose en diferentes frecuencias. | ||
| - | Un reloj puede tener tantas llamadas de retornos registradas como quieras, con un parámetro de contexto opcional. | ||
| - | |||
| - | Por ejemplo, el contador FPS mostrado en la esquina arriba izquierda es calculado con un reloj no-alterado que corre a 1Hz. | ||
| - | |||
| - | |||
| - | |||
| - | ===== Detalles ===== | ||
| - | |||
| - | Cuando usamos orx, no necesitamos escribir un <code c> | ||
| - | Lo que hacemos es crear un reloj ((o usamos uno existente, como el del núcleo o el reloj de la física)), especificando su frecuencia de actualización. | ||
| - | |||
| - | Podemos crear cuantos relojes querramos, debemos asegurarnos que la parte más importante de nuestra lógica (jugadores, enemigos ...) serán actulizados frecuentemente, | ||
| - | Por ejemplo, la física y la representación de gráficos usan dos relojes diferentes que tiene frecuencias distintas. | ||
| - | |||
| - | Existe otra gran ventaja en usar varios relojes pues podemos facilmente obtener distorción del tiempo. | ||
| - | |||
| - | En este tutorial, crearemos dos relojes, uno que corre a 100Hz (período = 0.01s) y otro a 5Hz (período = 0.2s). | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | pstClock1 = orxClock_Create(orx2F(0.01f), | ||
| - | |||
| - | pstClock2 = orxClock_Create(orx2F(0.2f), | ||
| - | |||
| - | Note que pasamos el tipo '' | ||
| - | Cualquier valor por encima de este es válido. Los más bajos son reservados para uso interno del motor. | ||
| - | |||
| - | Ahora usaremos el mismo actualizador de llamada de retorno para los dos relojes. Sin embargo, vamos a definir diferentes contextos, por lo tanto el primer reloj modificará al primer objeto y el segundo reloj al otro objeto: | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | orxClock_Register(pstClock2, | ||
| - | |||
| - | Esto significa que nuestra llamada de retorno será ejecutada 100 veces por segundo con pstObject1 y el segundo será ejecutado 5 veces por segundo con el objeto pstObject2. | ||
| - | |||
| - | Como nuestro actualizador de llamada de retorno solamente rota el objeto que se obtiende del parametro " | ||
| - | Sin embarbo, la rotación del segundo objeto se hace en mayor tiempo (5 Hz) que el primero (100 Hz) por lo que obtenemos diferentes velocidades de rotación. | ||
| - | |||
| - | Ahora veamos el código de la llamada de retorno. | ||
| - | |||
| - | Lo primero: necesitamos obtener nuestro objeto desde parametro " | ||
| - | Como orx usa [[wp> | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | Sí retorna '' | ||
| - | |||
| - | Nuestro próximo paso será aplicar rotación al objeto. | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | Veamos que aquí usaremos el valor tomado de nuestro reloj.\\ | ||
| - | Esto es porque toda nuestra lógica esta relacionada con relojes. | ||
| - | |||
| - | Por supuesto, existe una mejor forma de dar rotación a un objeto ((asignandole una velocidad angular por ejemplo o usando un '' | ||
| - | Pero volvamos a lo que nos interesa: reloj y distorción del tiempo! | ||
| - | |||
| - | En nuestro actualizador de llamada de retorno, además encuestaremos las entradas activas. Las entradas son cadenas de caracteres que están atadas, en cada fichero de configuración o por código, a teclas precionadas, | ||
| - | |||
| - | ------------------------------------- | ||
| - | |||
| - | In our case, if the up or down arrow keys are pressed, we'll strecthed the time for the first clock that has been created.\\ | ||
| - | If left or right arrow keys are pressed, we'll remove the stretching and go back to the original frequency. | ||
| - | |||
| - | As we didn't store our first created clock ((on purpose, so as to show how to retrieve it)), we need to get it back! | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | Specifying '' | ||
| - | It'll return the first clock created with the '' | ||
| - | |||
| - | Now, if the ''" | ||
| - | |||
| - | <code c> | ||
| - | { | ||
| - | /* Makes this clock go four time faster */ | ||
| - | orxClock_SetModifier(pstClock, | ||
| - | }</ | ||
| - | |||
| - | In the same way we make it 4X slower than originally by changing its modifier when ''" | ||
| - | |||
| - | <code c>else if(orxInput_IsActive(" | ||
| - | { | ||
| - | /* Makes this clock go four time slower */ | ||
| - | orxClock_SetModifier(pstClock, | ||
| - | }</ | ||
| - | |||
| - | Lastly, we want to set it back to normal, when the ''" | ||
| - | |||
| - | <code c>else if(orxInput_IsActive(" | ||
| - | { | ||
| - | /* Removes modifier from this clock */ | ||
| - | orxClock_SetModifier(pstClock, | ||
| - | }</ | ||
| - | |||
| - | And here we are! :-)\\ | ||
| - | As you can see, time stretching is achieved with a single line of code. As our logic code to rotate our object will use the clock' | ||
| - | |||
| - | This can be used in the exact same way to slow down monsters while the player will still move as the same pace, for example. | ||
| - | There are other clock modifiers type but they' | ||
| - | |||
| - | |||
| - | ===== Resources ===== | ||
| - | |||
| - | Source code: [[https:// | ||
| - | |||
| - | Config file: [[https:// | ||