2011-12-15 74 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