2011-12-15 15 views
0

私は単純なゲームを作ろうとしています。ボールが特定のブロックに入ると勝ちます。BOX2Dで非アクティブなオブジェクトを強制終了しますか?

力学:ボールはいくつかの障害物を通過し、最終的に2ブロックあります。ボールがあなたが勝つ左側のブロックに接触すると、次のレベルにはより多くのブロックとそれらの間のスペースが含まれます。

テスト映画は、(ボールをドロップするには、画面をクリックしてください): http://gabrielmeono.com/downloads/Lucky_Hit_Alpha.swf

これらは、主な変数です:

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

質問

は時々、ボールは障害物の1つに入荷し、もう移動しません。このオブジェクトをシーンから削除/削除することはできますか?

現在のコード:

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

あなたが有効になって眠っていることを確認します。体が休息すると、それは "眠る"でしょう。あなたの体をポーリングして、眠っているものを見ることができます。 ここにBox2D.orgのコンセプトのスレッドがあります。 http://www.box2d.org/forum/viewtopic.php?f=9&t=5578

0

私はquickbox2dを使用していませんが、box2dの素晴らしいラッパーのようです。

私はプラスチック製のチョウザメが言及として、それはあなたが上blog articlesを見つけることができると私は過去にgames at disturb mediaに使用したものである、BOX2D機能やボディのisSleepingようBOX2D機能/プロパティへのアクセスを許可するべきだと思います。

関連する問題