Foros del Web » Creando para Internet » Flash y Actionscript »

detección de colisiones, drag and drop, objetos que cambian de forma y AS3

Estas en el tema de detección de colisiones, drag and drop, objetos que cambian de forma y AS3 en el foro de Flash y Actionscript en Foros del Web. Hola, estoy desarrollando un juego en el que se debe detectar cuando una linea atraviesa un circulo. La linea la podemos redimensionar y posicionar con ...
  #1 (permalink)  
Antiguo 03/06/2008, 14:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 1
detección de colisiones, drag and drop, objetos que cambian de forma y AS3

Hola, estoy desarrollando un juego en el que se debe detectar cuando una linea atraviesa un circulo. La linea la podemos redimensionar y posicionar con el mouse haciendo drag&drop de los extremos.
El problema que se me presenta es con la detección de colisión entre la línea y el circulo.
Al parecer al redibujar la linea durante el MOUSE_MOVE, esta toma las dimensiones de un cuadrado limitado por los extremos de la misma. El problema es que este cuadrado "imaginario" es el que colisiona con el circulo y no la linea.
A alguien se le ocurre como hacer para que la linea (u otro objeto grafico que represente una linea que se pueda redimensionar) colisione correctamente con otro objeto?
Les dejo el codigo

Código:
import flash.display.MovieClip;
import flash.display.Shape;
import flash.events.MouseEvent;
import flash.events.Event;

var linea:Shape = new Shape();
addChild(linea);
linea.graphics.lineStyle(10,0x000000,1);
linea.graphics.moveTo(nodoi.x,nodoi.y);
linea.graphics.lineTo(nodof.x,nodof.y);

nodoi.addEventListener(MouseEvent.MOUSE_DOWN, onNodoIMouseDown);
nodoi.addEventListener(MouseEvent.MOUSE_UP, onNodoIMouseUp);
nodoi.addEventListener(MouseEvent.MOUSE_MOVE, onNodoMouseMove);
nodof.addEventListener(MouseEvent.MOUSE_DOWN, onNodoFMouseDown);
nodof.addEventListener(MouseEvent.MOUSE_UP, onNodoFMouseUp);
nodof.addEventListener(MouseEvent.MOUSE_MOVE, onNodoMouseMove);

function onNodoIMouseDown(e:MouseEvent):void {
    nodoi.startDrag();
    e.updateAfterEvent();
}
function onNodoIMouseUp(e:MouseEvent):void {
    nodoi.stopDrag();
}
function onNodoMouseMove(e:MouseEvent):void {
    if (linea.hitTestObject(punto)) {
        punto.alpha = 0.5;
    } else {
        punto.alpha = 1;
    }
    linea.graphics.clear();
    linea.graphics.lineStyle(10,0x000000,1);
    linea.graphics.moveTo(nodoi.x,nodoi.y);
    linea.graphics.lineTo(nodof.x,nodof.y);
    e.updateAfterEvent();
}
function onNodoFMouseDown(e:MouseEvent):void {
    nodof.startDrag();
}
function onNodoFMouseUp(e:MouseEvent):void {
    nodof.stopDrag();
}
nodoi y nodof, son instancias en el escenario de un circulo pequeño de donde arrastrar para redimensionar la linea, esta se dibuja entre un nodo y otro dinamicamente.
punto, es el circulo instanciado en el escenario.

Desde ya Muchas Gracias!
Saludos
Mariano
  #2 (permalink)  
Antiguo 10/06/2008, 15:09
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: detección de colisiones, drag and drop, objetos que cambian de forma y AS3

Encontre una Clase muy util que me sirivió para solucionar el problema que tenía espero que les sirva el aporte.

Flash Collision Detection Kit

Saludos
Mariano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:56.