2011-12-15 93 views
0

我试图做一个简单的游戏,当球落入某块时,你赢了。用BOX2D杀死不活动的物体?

机制:球通过几个障碍物落下,最后有两个方块,如果球碰到你赢的左方块,下一个关卡将包含更多的块和更少的空间。

测试影片(点击屏幕上砸球): http://gabrielmeono.com/downloads/Lucky_Hit_Alpha.swf

这些是主要的变量:

var winBox:QuickObject;//You win 
    var looseBox:QuickObject;//You loose 
    var gameBall:QuickObject;//Ball dropped 

问题

有时候,球将在其中一个障碍物中获得存货并且不会再移动。我可以杀死/从场景中删除这个对象吗?

目前代码:

package { 

import flash.display.MovieClip; 
import com.actionsnippet.qbox.*; 
import flash.events.MouseEvent; 
import flash.events.Event; 

[SWF(width = 600, height = 600, frameRate = 60)] 

public class LuckyHit extends MovieClip { 

    public var sim:QuickBox2D; 
    var winBox:QuickObject; 
    var looseBox:QuickObject; 
    var gameBall:QuickObject; 
    var simContacts:QuickContacts; 

    /** 
    * Constructor 
    */ 
    public function LuckyHit() 
    { 
     sim = new QuickBox2D(this); 
     simContacts = sim.addContactListener(); 
     simContacts.addEventListener(QuickContacts.ADD, contactListener); 
     //sim.createStageWalls(); 
     winBox = sim.addBox({x:5,y:600/30, width:300/30, height:10/30, density:0}); 
     looseBox = sim.addBox({x:15,y:600/30, width:300/30, height:10/30, density:0}); 



     // make obstacles 
     for (var i:int = 0; i<(stage.stageWidth/50); i++){ 
     //End 
      sim.addCircle({x:1 + i * 1.5, y:16, radius:0.1, density:0}); 
      sim.addCircle({x:2 + i * 1.5, y:15, radius:0.1, density:0}); 

     //Mid End 

       sim.addCircle({x:0 + i * 2, y:14, radius:0.1, density:0}); 
       sim.addCircle({x:0 + i * 2, y:13, radius:0.1, density:0}); 
       sim.addCircle({x:0 + i * 2, y:12, radius:0.1, density:0}); 
       sim.addCircle({x:0 + i * 2, y:11, radius:0.1, density:0}); 
       sim.addCircle({x:0 + i * 2, y:10, radius:0.1, density:0}); 


     //Middle Start 
      sim.addCircle({x:0 + i * 1.5, y:09, radius:0.1, density:0}); 
      sim.addCircle({x:1 + i * 1.5, y:08, radius:0.1, density:0}); 
      sim.addCircle({x:0 + i * 1.5, y:07, radius:0.1, density:0}); 
      sim.addCircle({x:1 + i * 1.5, y:06, radius:0.1, density:0}); 

     } 

     sim.start(); 


     stage.addEventListener(MouseEvent.CLICK, _clicked); 
    } 

    /** 
    * .. 
    * @param e MouseEvent.CLICK 
    */ 

    private function _clicked(e:MouseEvent) 
    { 
     gameBall = sim.addCircle({x:(mouseX/30), y:(1), radius:0.25, density:5}); 


    } 

    private function contactListener(e:Event) 
    { 
     if (simContacts.isCurrentContact(winBox,gameBall)) 
     { 
      // Won. 
      trace ('You won!'); 
     } 
    } 


} 

}

回答

0

我没有用过quickbox2d,但它看起来像一个漂亮的包装为Box2D的。

我认为应该允许访问Box2D的功能或Box2D的功能/性能,就像人体的isSleeping,塑料鲟提到,这是你可以找到blog articles,我已经在过去用于games at disturb media