Página inicial  

trans_770 trans_160

Ejercicio. Unidad 23. Colisión y Movimiento


Objetivo.

 

Reproduciremos la película que vimos en la teoría:



Ejercicio paso a paso.

 
  1. Abre el archivo colision.fla que encontrarás en la carpeta ejercicios/colision del curso.


  2. Selecciona el primer fotograma y abre el Panel Acciones, escribe en él lo siguiente:
    onEnterFrame = function() {
    
    	var velocidad:Number = 1;
    
    
    
    	if (Key.isDown(Key.DOWN)) {
    
    		if (!(fondo.hitTest(miClip.getBounds(_root).xMin, miClip.getBounds(_root).yMax+velocidad, true)
    
            || fondo.hitTest(miClip.getBounds(_root).xMax, miClip.getBounds(_root).yMax+velocidad, true))) {
    
    			miClip._y += velocidad;
    
    		}            
    
    	}
    
    	if (Key.isDown(Key.UP)) {
    
    		if (!(fondo.hitTest(miClip.getBounds(_root).xMin, miClip.getBounds(_root).yMin-velocidad, true)
    
            || fondo.hitTest(miClip.getBounds(_root).xMax, miClip.getBounds(_root).yMin-velocidad, true))) {
    
    			miClip._y -= velocidad;
    
    		}			
    
    	}
    
    	if (Key.isDown(Key.LEFT)) {
    
    		if (!(fondo.hitTest(miClip.getBounds(_root).xMin-velocidad, miClip.getBounds(_root).yMin, true)
    
            || fondo.hitTest(miClip.getBounds(_root).xMin-velocidad, miClip.getBounds(_root).yMax, true))) {
    
    			miClip._x -= velocidad;
    
    		}			
    
    	}
    
    	if (Key.isDown(Key.RIGHT)) {
    
    		if (!(fondo.hitTest(miClip.getBounds(_root).xMax+velocidad, miClip.getBounds(_root).yMin, true)
    
            || fondo.hitTest(miClip.getBounds(_root).xMax+velocidad, miClip.getBounds(_root).yMax, true))) {
    
    			miClip._x += velocidad;
    
    		}			
    
    	}
    
    }

    Parece un poco complicado pero en esencia es más sencillo. Para cada uno de los movimiento (arriba, abajo, izquierda y derecha) tendremos que evaluar si se produce colisión con el objeto miClip y el clip fondo.

    Pero no bastará con hacerlo sólo de una esquina, veamos un ejemplo para verlos con más claridad:

    ¿Se producirá colisión?


    Como ves en la imagen, deberemos ver si se producen dos colisiones. En el movimiento hacia abajo una será la de la esquina inferior izquierda y la otra de la esquina inferior derecha.

    Si por ejemplo, no evaluasemos el choque con la esquina inferior izquierda e intentásemos realizar un movimiento hacia abajo, ¡éste se realizaría! Y en definitiva es lo que queremos evitar.

    Observa también que para realizar el hitTest hemos tenido en cuenta la posición que adoptará el objeto después del movimiento (sumándole la velocidad, o lo que es lo mismo, el número de píxeles que se desplaza el objeto a cada pulsación).




   
© aulaClic. Todos los derechos reservados. Free Computer tutorials. Prohibida la reproducción por cualquier medio.
Septiembre - 2007.