Comunidad de diseño web y desarrollo en internet online

Posición de la Colisión

Citar            
MensajeEscrito el 21 Feb 2011 12:56 am
saludos a todos.

Estoy haciendo un juego en flash con AS2 por mi cuenta, es de plataformas pero incluye la opción de disparar con el mouse; bastante común a decir verdad pero todo un logro considerando que mi intención no es ser programador, sino animador.

Enfin, todo bien, el personaje se mueve con WASD, la mirilla sigue el mouse y cada vez que hago click, se efectúa un disparo, el disparo tiene hitest y mata a los enemigos una vez los toca...

El problema viene al momento de detectar el punto exacto en el cual colisiona.

Me apasionan los detalles, y si hago algo, me gusta hacerlo MÁS QUE BIEN.

Me gustaría que cada vez que la bala choque con el suelo deje un hueco.

Esto lo haría teóricamente fácil, le pondría "si la bala.clip choca con suelo.clip, aparece hueco.clip en la ubicación en que colisionaron bala y suelo"

Lo curioso es que, al tomar la posición de "bala.clip" el hitest toma la posición original, osea, en donde el clip empezó, mas no la posición en que colisionó con el suelo.

Este es el codigo que le puse a la bala:

onClipEvent(enterFrame){
if (this.hitTest(_root.suelo)){
Posx=_root.bala._x;
Posy=_root.bala._y;
_root.hueco._x=Posx;
_root.hueco._y=Posy;
}
}

Sé que la posición que están tomando las variables son, efectivamente, la posición original del clip, no tengo ni idea de cómo tomaría la posición de la colisión con el suelo.

Alguien me ayuda, por favor?

Por damovear

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Feb 2011 01:41 am
Bueno a mi parecer tendrias que guardar la ultima pocicion de la bala en una variable,
hice una prueba y me quedo algo como esto.

Código ActionScript :

var balafinX:Number
var balafinY:Number
muro._visible=false
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function (){
     mira._x= _xmouse;
     mira._y= _ymouse;
   
}
Mouse.hide();
Mouse.addListener(mouseListener)

this.onMouseDown=function(){
Bala= attachMovie("bala","bala",prof)

bala._x =_xmouse
bala._y =_ymouse

bala.onEnterFrame=function(){
this._y-=25
if(this.hitTest(muro)){
balafinY= bala._y
balafinX= bala._x
removeMovieClip(bala)
HUECO();

   }
  }
}

function HUECO(){
Hueco= attachMovie("hueco","hueco",mprof)
Hueco._x=balafinX
Hueco._y=balafinY
   }

Espero te sirva saludos MaxiSan

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox
Citar            
MensajeEscrito el 21 Feb 2011 02:41 am
Gracias por la pronta respuesta MaxxiSan, sin embargo, aún no logro mi cometido.

Tu forma de codificar es diferente a la mía, de hecho, la tuya es mucho más simple pero larga, la mía es más complicada pero corta, así que he tenido que adaptar tu código al mio.

En teoría, me sugieres que haga esto:

DENTRO DE BALA:
onClipEvent(enterFrame){
if (this.hitTest(_root.suelo)){
balafinY=this._y;
balafinX=this._x;
removeMovieClip(this);
hueco._x=balafinX;
hueco._y=balafinY;
}
}
}

Funciona parcialmente, el hueco aparece, pero no en la posición de la bala, sino en el lugar en el cual lo puse inicialmente; lo bonito de esto es que vi la opción de "remove" que no se me había ocurrido, y ahora el disparo desaprece, pero aún no puedo hacer que el hueco adapte la poisición final de la bala.

¿Estoy haciendo algo mal?

Por damovear

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Feb 2011 03:54 am
una cosa que no entiendo es como creas la bala¿? dinamicamente imagino.
por eso no entiendo como insertas el código en tu mc?

básicamente el código que yo uso para crear el hueco es este

Código ActionScript :

bala.onEnterFrame=function(){
this._y-=25
if(this.hitTest(muro)){
balafinY= bala._y
balafinX= bala._x
removeMovieClip(bala)
HUECO();

}
}


yo por lo general suelo trabajar desde la linea de tiempo en los códigos.
cuando necesito generar acciones en objetos como balas lo mejor es
usar una clase.
básicamente tu código funciona yo lo probé el tema es que para tu cometido no veo como lo
puedes implementar de forma correcta.
yo creo que mi manera es una buena opción de abordar el problema lejos de ser la mejor
pero una buena si.
Si podes o aclarar mas tu manera de hacerlo o mandar un ej, de tu flash, así capas que te puedo ayudar mas.
Saludos Maxxx

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox
Citar            
MensajeEscrito el 24 Feb 2011 04:44 am
Hola, mire tu código y el tema es que usas duplicate en ves de Atach yo te recomendaría que cambies el código, ya que al usar duplicate la posición siempre va a ser la del original.

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox

 

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