Comunidad de diseño web y desarrollo en internet online

¿Como mover un personaje mediante teclas?

Citar            
MensajeEscrito el 09 Oct 2006 02:26 pm
Hola amigos de Cristalab, tengo unas dudas que me rondan por la cabeza ya hace un tiempo. Estoy intentando crear un juego, y me gustaría saber como crear un personaje que se mueva mediante teclas, es decir, que si quiero que salte pueda apretar la barra espaciadora y lo haga, si quiero que camine lo haga con las teclas WASD, etc. ¿Que scripts debo utilizar para conseguir esto?
Muxas gracias, espero respuesta :D

Por porteros13

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Oct 2006 03:37 pm
Debes de crear un script para que te capture cuando presiones la tecla y en base a eso realizar el movimiento, creo que en la sección de tutoriales esta uno de un juego con teclas y una referencia de AS un poco más avanzado.

Saludos.

Por Ereb

Claber

1352 de clabLevel

1 tutorial

Genero:Masculino  

México, D.F.

firefox
Citar            
MensajeEscrito el 09 Oct 2006 09:02 pm
Me he estado repasando todos los tutoriales :lol: y no he visto nada relacionado :cry: (lo que mas se parecia era un juego de coxes que simulaba colisiones o algo raro...)

Si alguien supiese algun link o como se hace esto que pido se lo agradeceria muxo ^^ (Gracias Ereb por responderme)

Por porteros13

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Oct 2006 10:14 pm
Como te ha dicho Ereb, lo unico que has de hacer es colocar un código que te controle las pulsaciones del teclado.. algo tipo esto:

Código :

var teclado:Object = new Object();
teclado.onKeyDown = function() {
   switch (Key.getAscii()) {
   case 32 :
      //acciones para la barra espaciadora
      break;
   default :
      trace(Key.getAscii());
   }
};
Key.addListener(teclado);

Dentro del switch colocas los case con los codigos de las teclas que quieres utilizar (puedes utilizar el trace(Key.getAscii()); para obtener el numero Ascii de las teclas)
y ahi colocas las acciones que quieras realizar con las teclas, como por ejemplo mober la ._x del personaje...

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 10 Oct 2006 06:54 pm
Muxas gracias por el código, te lo agradezco! Me pondré ahora mismo a trastear :lol:

Por porteros13

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Oct 2006 08:07 pm
¿Cómo os complicáis tanto? En el personaje...

Código :

onClipEvent(enterFrame){
   if(Key.isDown(Key.RIGHT)){
      _x += 5
   }
   if(Key.isDown(Key.LEFT)){
      _x -= 5
   }
   if(Key.isDown(Key.UP)){
      _y -= 5
   }
   if(Key.isDown(Key.DOWN)){
      _y += 5
   }
}

Eso solo hace que se mueva, pero algo es algo. Ahora solo hay que modificarlo para quecer todo un personaje!! ^^

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 10 Oct 2006 09:06 pm
Uff! no veia un onClipEvent(enterFrame) desde flash 5 :lol:

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 10 Oct 2006 09:11 pm

Zguillez escribió:

Uff! no veia un onClipEvent(enterFrame) desde flash 5 :lol:

Pues yo sí, y muchos. No veo motivo para no usarlo. ¬¬

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 10 Oct 2006 09:23 pm

nestorrente escribió:

Zguillez escribió:

Uff! no veia un onClipEvent(enterFrame) desde flash 5 :lol:

Pues yo sí, y muchos. No veo motivo para no usarlo. ¬¬

¿Tal vez porque es una manera MUY antigua de programar... y que en un futuro no muy lejano te va a dar error?
En Flash9 / ActionScript 3 tanto el onClipEvent como el isDown estan eliminados...

copiado de la referencia AS3:
onClipEvent() Removed. Use the new event handling system in the flash.events package instead.
isDown() Method Removed for security reasons.

Por no decir que el código del onEnterFrame se ejecuta continuamente, aun si el usuario no toca el teclado... en cambio con un listener solo se ejecutará al detectar una pulsación... con el ahorro de recursos que eso conlleva

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 11 Oct 2006 06:46 am
Hace como 1 año, desarrolle un pequeño juego, lo que hice con el personaje fue crear un movieclip del personaje y ponerle un nombre de instancia (en este caso kiki_mc) y despues en un frame puse el siguiente codigo:

Código :

watchKeyBoard = new Object();
watchKeyBoard.onKeyDown = function() {
        trace("a key is pressed. the key that is pressed is "+Key.getAscii());
};
Key.addListener(watchKeyBoard);


function moveStuff () {
   if (Key.isDown(Key.RIGHT)) {
                this.gotoAndPlay(1);
            this._x += 5;
        }
      if (Key.isDown(Key.LEFT)) {
                this.gotoAndPlay(11);
            this._x-= 5;
        }
      if (Key.isDown(Key.UP)) {
                this.gotoAndPlay(20);
        }
         
}

kiki_mc.onEnterFrame = moveStuff;


espero que te sirva, si quieres un .fla de ejemplo con gusto te lo proporciono, pero creo que seria mejor que en base al codigo desarrollaras todo, suerte :wink:

Por Koeth

655 de clabLevel

1 tutorial

 

El DeFectuoso

firefox
Citar            
MensajeEscrito el 11 Oct 2006 12:29 pm
koeth:
si tienes creado un listener... ¿para que lo usas solo para lanzar un trace(), y metes el código en un onEnterFrame? ya que lo has creado úsalo bien...

y que pasa cuando querais poner el codigo a una tecla que no sean las flechas (Key.UP...) y necesiteis utilizar el Key.getCode() para saber que tecla a tocado... Vais a poner un if(Key.getCode()==30) dentro del if (Key.isDown())... buff menuda chapuza :roll:

Código :

var teclado:Object = new Object();
teclado.onKeyDown = function() {
   switch (Key.getCode()) {
   case 39 :
      personaje._x += 5;
      break;
   case 37 :
      personaje._x -= 5;
      break;
   case 40 :
      personaje._y += 5;
      break;
   case 38 :
      personaje._y -= 5;
      break;
   default :
      trace(Key.getCode());
   }
};
Key.addListener(teclado);

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 11 Oct 2006 01:22 pm
Disuclpa si el codigo tiene errores, pero bueno soy diseñador grafico y llevo muy poco tiempo aprendiendo a programar en A.S.

Yo lo unico que queria era ayudar, el pidio un codigo que le permitiera mover el personaje, yo no cree este codigo si no que estuve viendo varios codigos y arme uno y a mi por lo menos me funciono para mover a mi personaje e incluso para hacerlo "saltar".

Con lo que respecta a la parte que me devuelve que tecla presione en codigo ascii, lo tengo porque como era para un juego infantil si el niño apretaba la primera letra de un color, el cuarto se iluminaba de ese color, y pues necesitaba conocer el ascii de cada una de las teclas, si lo meti aqui fue siemplemente porque se me olvido borrarlo ^^

Bueno, ustedes son los expertos a mi todavia me falta mucho por aprender.

Por Koeth

655 de clabLevel

1 tutorial

 

El DeFectuoso

firefox
Citar            
MensajeEscrito el 11 Oct 2006 01:49 pm

koeth escribió:

Disuclpa si el codigo tiene errores, pero bueno soy diseñador grafico y llevo muy poco tiempo aprendiendo a programar en A.S.

Casi igual: Llevo solo 1 año con Flash, y solamente 2 meses con AS (cuando me registré aquí).

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 11 Oct 2006 02:58 pm

nestorrente escribió:

koeth escribió:

Disuclpa si el codigo tiene errores, pero bueno soy diseñador grafico y llevo muy poco tiempo aprendiendo a programar en A.S.

Casi igual: Llevo solo 1 año con Flash, y solamente 2 meses con AS (cuando me registré aquí).


pero eh visto tu pagina y programas cosas buenas (vi el juego de la culebrita ^^ )

Por Koeth

655 de clabLevel

1 tutorial

 

El DeFectuoso

firefox
Citar            
MensajeEscrito el 13 Oct 2006 12:29 pm
Diosss! Que bombardeo de informacion :lol: Amos a ver, los iré probando a ver q tal. Me gustaria crear un juego tipo esto:
http://img85.exs.cx/img85/5046/RBO.jpg

En el cual el movimiento del personaje sea solo en 2 direcciones, atras y alante, no se si me explico. Y weno, luego saltar y mas cosas, pero la idea es esa.

Por porteros13

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 13 Oct 2006 03:34 pm

koeth escribió:

Disuclpa si el codigo tiene errores, pero bueno soy diseñador grafico y llevo muy poco tiempo aprendiendo a programar en A.S.

Hola Koeth. No tienes porque disculparte, aqui estamos todos para aprender y cualquier aportación es apreciada... :wink: yo solo di mi punto de vista sobre el tema, no era mi intención criticar a nadie
Saludos

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 14 Oct 2006 02:24 am
Diosss! Que bombardeo de informacion Amos a ver, los iré probando a ver q tal. Me gustaria crear un juego tipo esto:
http://img85.exs.cx/img85/5046/RBO.jpg

Bueno, si no querés capturar las teclas con un listener (lo que yo no haría dado que sólo vas a usar las flechitas :? ) usas algo como:

Código :

if (Key.isDown(Key.Right)){
//
personaje._x += 5;
//
}



También, yo usaba algo así para el movimiento acelerado:

Código :

if (Key.isDown(Key.Right)){
//
tiempo++;
personaje._x += tiempo * aceleracion;
//
} else if (tiempo > 0){
tiempo = 0;
}


Claro está, antés definís la variable aceleracion.


Espero te sea útil :wink:

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 14 Oct 2006 10:20 am

porteros13 escribió:

... quiero que camine lo haga con las teclas WASD, etc.

HernanRivas escribió:

... Bueno, si no querés capturar las teclas con un listener (lo que yo no haría dado que sólo vas a usar las flechitas ...
:?
para usar las teclas que quiere la opción más comoda es un listener

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 14 Oct 2006 12:44 pm
Muxas gracias a todos por preocuparos. Esto me comienza a funcionar!! Ahora me ha surgido otra duda: Al crear un personaje en 2D (es decir, tipo Mario de Gameboy) me ha llegado el momento de hacerlo saltar :lol: y no se como hacer un efecto tipo gravedad para el salto. Alguien puede aclararmelo?? Tambien me gustaria saber como meter un clip de película a cada accion que haga (por ejemplo al pegar que saque el puño).

Al final me he decidido x no usar las teclas WASD como dije antes, prefiero experimentar primero con el 2D de alante y atrás.

Espero respuesta impaciente :wink:

Por porteros13

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 14 Oct 2006 01:01 pm

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 14 Oct 2006 03:10 pm
Zguillez, yo decía que usara las flechitas porque era más fácil y, básicamente, era lo que el quería.

Si, ya sé que WASD no es lo mismo que arriba, abajo, derecha e izquierda pero cumplen la misma función, por lo que la solución más práctica (para alguien no muy lego en el tema) me parecía mejor.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 06 Feb 2011 06:21 pm
Yo he llegado hasta ese punto, pero y si lo que quiero es que conforme se mueva avanze de frame ?

O sea, he creado un movieclip, con 8 fotogramas, por cada movimiento, quiero que cuando de a la izquierda pues se mueva, y tb vaya progresando en la linea de tiempo del movieclip, casi todas las pruebas que he hecho son los mismos resultados, el moviclip solo hace los 2 primeros frames, por mucho que mantenga pulsada la tecla no avanza. Alguna idea ?

Muchas gracias,

Por erone

16 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.