Please login or register.

Login with username, password and session length
Advanced search  

News:

Forum rules - please read before posting, it can save you a lot of time.

Author Topic: Videos...  (Read 4930 times)

0 Members and 1 Guest are viewing this topic.

SP

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 10
    • View Profile
Videos...
« on: July 08, 2009, 11:30:39 PM »

Buenas, un amigo y yo estamos preparando una aventura gracias al WME, el cual está bastante bien y nos resulta "sencillo". Ahora bien, el problema llega cuando queremos que el programa reproduzca un video (hemos leido que solo admite .avi y .ogg). Hemos probado con Game.PlayVideo y nos daba script error o directamente no ocurría nada.

Por favor, si alguien sabe del tema agredeceríamos que nos ayudarais con esto

Muchas gracias  ;)
Logged

Jose

  • Regular poster
  • ***
  • Karma: 2
  • Offline Offline
  • Posts: 134
    • View Profile
Re: Videos...
« Reply #1 on: July 09, 2009, 08:26:07 AM »

No estaría de más que aportases algún dato más: características y formatos del vídeo, el script, etc.
Logged

SP

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 10
    • View Profile
Re: Videos...
« Reply #2 on: July 09, 2009, 03:59:52 PM »

El video es .avi, te adjunto el codigo:


Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  GoToObject(551, 565);
var mirar;
 
mirar[0] = "Una lámpara"; 
mirar[1] = "Está encendida";
var reply = Random(0,1);
actor.Talk(mirar[reply]);
}

////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  GoToObject(551, 565);
Game.PlayVideo("scenes\Room\Lámparaencendida\Lámparavideo.sprite");
Sleep(650);
}


////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.GoTo(551, 565);
  actor.TurnTo(DI_RIGHT);
var hablar;
 
hablar[0] = "¿Por quién me has tomado?"; 
hablar[1] = "No quiero hablar con la lámpara";
hablar[2] = "Ilumíname";
var reply = Random(0,2);
actor.Talk(hablar[reply]);
}

////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  GoToObject();
}


////////////////////////////////////////////////////////////////////////////////
function GoToObject()
{
  actor.GoTo(551, 565);
  actor.TurnTo(DI_UPRIGHT);
}
« Last Edit: July 11, 2009, 12:42:46 PM by SP »
Logged

Jose

  • Regular poster
  • ***
  • Karma: 2
  • Offline Offline
  • Posts: 134
    • View Profile
Re: Videos...
« Reply #3 on: July 10, 2009, 08:26:54 AM »

No consigo ver donde tienes el código para reproducir el vídeo... :o
Logged

SP

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 10
    • View Profile
Re: Videos...
« Reply #4 on: July 12, 2009, 04:41:27 PM »

Lo he editado
Logged

HelLRaiseR

  • I don't want to make a Monkey Island clone :(
  • Moderator
  • Frequent poster
  • *****
  • Karma: 4
  • Offline Offline
  • Posts: 270
    • View Profile
    • Adventure Box Studios
Re: Videos...
« Reply #5 on: July 12, 2009, 06:59:38 PM »

Muy raro se ve esto:

Code: [Select]
Game.PlayVideo("scenes\Room\Lámparaencendida\Lámparavideo.sprite");
La función PlayVideo recibe el vídeo como parámetro y le estas pasando un sprite, con lo que va a ser que no.

Ademas PlayVideo es algo antigüo que ha sido sustituido por Game.PlayTheora() con lo que mejor convierte el vídeo a .ogv y reprodúcelo asi, el formato ogv comprime de una forma espectacular y la calidad es muy buena.
Logged
Regards,

    Fernando

HelLRaiseR

  • I don't want to make a Monkey Island clone :(
  • Moderator
  • Frequent poster
  • *****
  • Karma: 4
  • Offline Offline
  • Posts: 270
    • View Profile
    • Adventure Box Studios
Re: Videos...
« Reply #6 on: July 12, 2009, 07:31:47 PM »

A ver, acabo de ver tu otro post en el foro técnico en inglés y me parece que es que tienes un lio de cojones. Pasame un privado a ver si podemos quedar en el chat o algo asi y te explico cosas
Logged
Regards,

    Fernando

SP

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 10
    • View Profile
Re: Videos...
« Reply #7 on: July 14, 2009, 10:29:34 AM »

Graciaas! después de varios intentos hemos logrado que funcione el video mediante el codigo "Game.PlayTheora" y convirtiendolo al formato ogm =)

Ahora nos gustaría saber como se reproducen animaciones, es decir los videos se utilizan más para intros o animaciones muy largas, pero cuando se trata de mover el brazo para encender un interruptor, o agacharse para coger un objeto se suelen utilizar sprites no??

Muchas gracias.  :)
Logged

HelLRaiseR

  • I don't want to make a Monkey Island clone :(
  • Moderator
  • Frequent poster
  • *****
  • Karma: 4
  • Offline Offline
  • Posts: 270
    • View Profile
    • Adventure Box Studios
Re: Videos...
« Reply #8 on: July 14, 2009, 04:53:50 PM »

A ver, eso hay dos formas de hacerlo, dependiendo de como sea tu juego:

1. Si el juego es 2,5D pues tendrás un actor, con sus animaciones dentro de un .x y tendrás que hacer un PlayAnim("nombre") o un PlayAnimAsync("nombre"),

2. Si el juego es 2D, se te pueden dar dos casos, o bien la animación la hace un actor, o bien una entity que tiene un sprite

En el caso de que sea un actor:

por ejemplo le das a usar interruptor y el actor va hasta el interruptor y alli quieres que haga una animación para que lo pulse.

Debes tener la animación hecha como un sprite con sus fotogramas y tal.

En el script del objeto interruptor, en el evento onTake:

- Te vas hasta el interruptor: actor.GoTo(posicionx,posiciony);
- Te pones en la posición correcta: actor.Direction(DIRECCION);
- Haces la animación: actor.PlayAnim(sprite_pulsar.sprite);

Y listo.

Ahora imagina que quieres que una entity haga una animación cuando haces una acción, por ejemplo, hay un ascensor que cuando pulso el interruptor quiero que se abra la puerta.

En este caso debes tener un sprite con la animacion del actor pulsando y otro con la animación de la puerta del ascensor, asi como la imagen de la puerta en sus dos estados, abierta y cerrada.

En la escena tendrás una entidad que se llama "puerta_ascensor" con el sprite con la imagen de la puerta cerrada. Aparte tendrás el sprite de la puerta abierta.

En el script del objeto interruptor, en el evento onTake:

- Te vas hasta el interruptor: actor.GoTo(posicionx,posiciony);
- Te pones en la posición correcta: actor.Direction(DIRECCION);
- Haces la animación del actor: actor.PlayAnim(sprite_pulsar.sprite);

Hasta aqui es como antes, el actor va hasta el interruptor y lo pulsa.

- Cogemos la referencia del ascensor que esta en la escena: var ascensor = Scene.GetNode("puerta_ascensor");
- Reproducimos la animación de la puerta abriendose: ascensor.PlayAnim("abre_puerta.sprite");
- Dejamos la entidad con la puerta abierta: ascensor. SetSprite("puerta_abierta.sprite");

Luego a partir de aqui ya lo complicas lo que quieras, con un temporizador que al cabo de un rato cierre la puerta o haces que el actor ande hacia la puerta y cambias de escena como si tomase el ascensor o cosas así.

Dale una vuelta a la ayuda en el apartado actor y entities, porque ahi lo explica todo superbien.


Logged
Regards,

    Fernando
 

Page created in 0.353 seconds with 23 queries.