Comunidad de diseño web y desarrollo en internet online

Colisión con dos objetos simultaneos

Citar            
MensajeEscrito el 22 Feb 2012 05:23 pm
Hola, estoy empezando con AS2 y tengo una duda, que no se como resolver.

He creado un archivo de colisiones donde hay tres objetos: A, B y C
A se mueve con drag y drop (ratón)
C se mueve con los cursores (teclado)
Y cuando cualquier de los dos colisiona con B, la película va al fotograma siguiente donde pone "fin".

Lo que quiero conseguir es que la película no vaya al fotograma siguiente cuando A o C por separado colisionen con B, si no que para ir al fotograma siguiente, tengan que colisionar con B tanto A como C, a la vez.

En otras palabras, no quiero que la condicion se cumpla cuando uno de los dos objetos colisionen con el tercero, si no cuando ambos colisionan simultaneamente.

[He subido mi archivo .fla por si queréis revisarlo, se descarga en el siguiente enlace]
http://www.filedropper.com/colisioncondosobjetoscoincidentes

Muchisimas gracias!

Por AzulyNegro

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Feb 2012 10:52 am
Supongo que tienes un hitTest, ponlo en A y C, al colisionar pasan una variable a true, si la variable de A y la de C son true, pues pasas al siguiente fotograma

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2012 12:22 pm
Hola solisarg, ante todo, muchas gracias por contestar a mi hilo.

Ante todo avisar de que no tengo apenas idea de action script2, por lo tanto voy casi a ciegas y me entero de poco, voy fijandome en los ejemplos.

Intenté hacer lo que me comentaste, pero no se aplicar bien las variables.

He intentado definir dos variables "resultado1" y "resultado2", del tipo booleano, y hacer que cuando A colisione con B, "resultado1" sea True, y cuando C colisione con B, "resultado2" sea True. Finalmente intento crear una condicion para que cuando "resultado1" y "resultado2" sean True, se cumpla un GotoandStop al fotograma 2.

Se que te pido demasiada paciencia, pero me sería de gran ayuda si descargaras el archivo .fla que subí a filedropper, y me comentaras donde tengo el error (supongo que tendre bastantes errores)
Este es el enlace del archivo modificado:
http://www.filedropper.com/colisioncondosobjetoscoincidentes2


Y este es el enlace del que tenia antes, que va al frame 2 cuando colisiona solo uno de A o C:
http://www.filedropper.com/colisioncondosobjetoscoincidentes


Muchisimas gracias.

Por AzulyNegro

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Feb 2012 12:30 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2012 12:38 pm
No tenia conocimiento de ello, aunque quede claro la voluntad de aprendizaje, ya que el archivo que subí a internet no es mas que un ejemplo con circulos que no tiene ningun uso excepto el estudio del mismo.

En cualquier caso:

Tenemos 3 objetos, A, B y C.

La idea es que cuando A y C simultaneamente colisionen con B, la película avance al frame 2.

Intento definir dos variables "resultado1" y "resultado2", del tipo booleano, y hacer que cuando A colisione con B, "resultado1" sea True, y cuando C colisione con B, "resultado2" sea True. Finalmente intento crear una condicion para que cuando "resultado1" y "resultado2" sean True, se cumpla un GotoandStop al fotograma 2.

El codigo AS del frame 1 es el siguiente:


//aqui estoy definiendo las dos variables booleanas
var resultado1:Boolean;

var resultado2:Boolean;

//aqui intento que cuando las variables "resultado1" y "resultado2" den True
//la película avance al fotograma 2
on (resultado1=True)(resultado2=True) {
gotoAndStop (2);
}

//esto es un stop simple, pero no funciona...
stop();


El codigo AS del objeto A es el siguiente:

onClipEvent (enterFrame) {

//esta parte se detecta la colision con B
if(this.hitTest(_root.B)){
//aqui intento decirle que si A colisiona con B, la variable resultado 1 sea True
_root.resultado1=True;();

}
}
//esto es para que se mueva con el raton
on(press) {
startDrag(this,false);
}
on(release) {
stopDrag();
}


El código del objeto C es el siguiente:
//esto es para que se mueva con las teclas
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
_x -= 5;
}
if (Key.isDown(Key.RIGHT)) {
_x += 5;
}
if (Key.isDown(Key.UP)) {
_y -= 5;
}
if (Key.isDown(Key.DOWN)) {
_y += 5;
}
//aqui intento que cuando C colisione con B, la variable "resultado2" sea True
if(this.hitTest(_root.B)){
_root.resultado2=True;();
}
}

Por AzulyNegro

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Feb 2012 12:43 pm
Ok, ¿tienes idea de programación? (en cualquier lenguaje)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2012 12:48 pm
Se como funciona la mecánica básica, y como dije estoy intentando aprender as2 precisamente ahora, por eso voy planteandome problemas hipotéticos para completarlos.

Por AzulyNegro

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Feb 2012 01:26 pm
Ok, npi. En el timeline principal pon esto:

Código ActionScript :

var achoca:Boolean = false;
var cchoca:Boolean = false;
this.onEnterFrame = function(){
  if(A.hisTest(B)) achoca = true;
  if(C.hitTest(B)) cchoca = true;
   if(achoca && cchoca) {
      gotoAndStop("choque")
      delete this.onEnterFrame
   }
}


Igual si vas a aprender desde 0, es mucho mas útil aprender AS3 que una versión de hace 5 años

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2012 01:35 pm
Bueno, no es desde cero, se algunas cosillas, básicas, si, pero algo.

Gracias, jorge, a partir de esto creo que me las puedo arreglar para crear coincidencias simultaneas.

Un saludo.

Por AzulyNegro

10 de clabLevel



 

chrome

 

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