Pregunta sobre programación con AGS: Animaciones

¿Quieres crear una aventura? ¿La has hecho y quieres darla a conocer? ¿Buscas gente que te ayude? ¿Quieres pedir o dar opiniones sobre cosas del mundillo amateur? Éste es tu foro.

Moderador: Moderadores

Responder
Edgar
Aventurero cáspico
Mensajes: 24
Registrado: Domingo, 4 de Septiembre de 2011 14:26

Pregunta sobre programación con AGS: Animaciones

Mensaje por Edgar » Domingo, 4 de Septiembre de 2011 23:05

Hola amigos. Tengo una pregunta: ¿Cómo puedo hacer para que un personaje no jugador/character esté en constante animación, sin que ello paralice el juego?. Por que hacer una animación constante es fácil. Pones una view en el comando repeat de la room y listo... pero el cursor desaparece y no puedo hacer nada...... supongo que es un simple comando, pero, ¿cual?.

Y otra cosilla un poco más complicadilla... ¿Se puede hacer que una parte de un personajenojugador/character sea clickeable de manera independiente, como por ejemplo, un zapato, con el cual se pueda interactuar de forma independiente, o habría que crear un objeto aparte, con sus propias funciones, y luego hacer coincidir sus posiciones para que una vez en la room, parezcan parte de la misma cosa?

Sadistyk
Aventurero cáspico
Mensajes: 29
Registrado: Lunes, 12 de Febrero de 2007 3:37
Ubicación: Argentina
Contactar:

Re: Pregunta sobre programación con AGS: Animaciones

Mensaje por Sadistyk » Jueves, 29 de Diciembre de 2011 0:51

Con respecto a la primer pregunta, AGS tiene una animación especial llamada idle que se ejecuta cuando el personaje (principal o no) no está haciendo nada. Lo que tenés que hacer es crear un view con tus sprites que forman la animación y después en las propiedades del peronaje fijate que hay una que dice 'IdleView'. Ahí tenés que pone el número de view que representa la animación del personaje en cuestión.

En cuanto a la segunda pregunta tenés que crear un objeto aparte y superposicionarlos para que den la apariencia de que son uno solo pero en realidad son dos. Si el personaje se mueve podrías crear un personaje nuevo que solo sea el zapato y en los views solo pondrías las animaciones del zapato. Algo así:

El personaje sin los zapatos
Imagen

Solo los zapatos
Imagen

A grosso modo, en la función repeadtely_execute del global script podrías poner algo así:

function repeatedly_execute_always()
{
cZapatos.X = cGuybrush.X;
cZapatos.Y = cGuybrush.Y;
cZapatos.Room = cGuybrush.Room;
cZapatos.Loop = cGuybrush.Loop;
cZapatos.Frame = cGuybrush.Frame;
}

para que los zapatos estén exactamente en el mismo lugar que el personaje al que pertenecen. Pero bueno, esto sólo valdría la pena hacerlo si el personaje se mueve, si está quieto hacelo con un objeto que es mucho más fácil.
No hay conocimiento que no sea poder

kurt
Lucas-yonki
Mensajes: 86
Registrado: Viernes, 18 de Mayo de 2007 17:38
Ubicación: Nirvana
Contactar:

Re: Pregunta sobre programación con AGS: Animaciones

Mensaje por kurt » Jueves, 29 de Diciembre de 2011 9:41

Y ¿por qué los zapatos van independientes del resto del cuerpo?

Sadistyk
Aventurero cáspico
Mensajes: 29
Registrado: Lunes, 12 de Febrero de 2007 3:37
Ubicación: Argentina
Contactar:

Re: Pregunta sobre programación con AGS: Animaciones

Mensaje por Sadistyk » Jueves, 29 de Diciembre de 2011 19:06

Internamente es un personaje aparte (el resultado final va a parecer que son uno solo), para poder poner acciones diferentes en los eventos de mirar, tomar, etc. La idea principal atrás de esto es que para cada acción haya respuestas distintas dependiendo de la parte del cuerpo con la que estás interactuando. Supongo que se podría tmb hacer por programación, por ejemplo:

function cGuybrush_Talk() // Evento que se dispara cuando se mira el personaje
{
if (mouse.Y < cGuybrush.Y + 10) // Mirando los zapatos
cGuybrush.Say("Que lindos zapatos!!");
else // Mirando el resto del cuerpo
cGuybrush.Say("Mira, un gran pirata!!");
}

Esto anda joya pero tiene dos problemas:
1: Tenés que poner un número arbitrario (el 10) que te mida más o menos la altura de los zapatos para ver si estás mirando los zapatos o el resto del cuerpo.
2: Si tenés algún tipo de interfaz que use el @OVERHOTSPOT@ y vos querés que cuando el cursor pase por arriba de los zapatos en la pantalla te aparezca la palabra "zapatos" estás en el horno, así no lo podés hacer. Bah, se podría hacer por programación como lo que hice recien, pero me parece que es demasiado por un par de zapatos jaja.

Si yo lo tuviera que hacer lo haría con los dos personajes que en realidad son uno solo (animaciones de los zapatos y del personaje por separado), porque el código sería mucho más legible y mantenible y el resultado final sería lo que yo quiero. Pero bueno, son distintas formas de llegar a lo mismo, cada uno hace lo que quiere.
No hay conocimiento que no sea poder

Responder