2012-02-22 101 views
1

我是AS3的新手,需要一些帮助。我正在尝试制作像马里奥这样的游戏。我制作了一个可以立即跳转的角色,但是我碰到了碰撞检测问题。AS3碰撞检测不被识别

我想让我的角色在酒吧上跳,酒吧位置较高。我的碰撞检测根本不起作用..

我制作了一个实例名为mcMain的cirle,并且我制作了一个MovieClip。 T也做了一个实例名为balkje的矩形,我也做了一个MovieClip它。

我希望你能告诉我我的代码有什么问题,以及为改变碰撞检测结果而必须改变的事情!非常感谢!

balkje.addEventListener(KeyboardEvent.KEY_DOWN, drag); 
stage.addEventListener(KeyboardEvent.KEY_UP, drop); 

function drag(e:KeyboardEvent):void 
{ 
    e.target.startDrag(); 
} 

function drop(e:KeyboardEvent):void 
{ 
    stopDrag(); 
    if (balkje.hitTestObject(mcMain)) 
    { 
     trace("Collision detected!"); 
    } 
    else 
    { 
     trace("No collision."); 
    } 
} 
+0

我不确定你在问什么。 'balkje'被拖到周围,但碰撞不起作用,或者您在移动'balkje'时有问题吗? – 2012-02-22 15:18:14

回答

0

我想你应该使用mouseEvent,而不是键盘事件。 如何用键盘拖动?

balkje.addEventListener(MouseEvent.MOUSE_DOWN, drag); 
balkje.addEventListener(MouseEvent.MOUSE_UP, drop); 

function drag(e:MouseEvent):void 
{ 
    e.target.startDrag(); 
} 

function drop(e:MouseEvent):void 
{ 
    e.target.stopDrag(); 

    if (balkje.hitTestObject(mcMain)) 
    { 
     trace("Collision detected!"); 
    } 
    else 
    { 
     trace("No collision."); 
    } 
} 
+0

您不必使用'MouseEvent'来调用'startDrag()'。这将在你的脚本的任何地方工作。 – 2012-02-22 15:09:46

+0

@rvmook我没有说你必须使用鼠标事件。尝试阅读帖子后再将其标记下来。 – crooksy88 2012-02-22 16:34:44

+0

当然好像'你怎么能用键盘拖拽?'暗示它,我想我误解了它。也许下一次尝试延长你的满足感,或者至少当别人给你投票时不要像朋克一样表演。 – 2012-02-22 16:52:30