2011-07-04 79 views
2

我是papervision 3D的新手,我在基本視圖中創建了兩個顯示對象。
下面的代碼的一部分:Papervision 3d hitTestObject不起作用?

... 
_stick = new Cube(materials, 50, 5, 500); 
_ball = new Sphere(new ColorMaterial(0xfc0000), 80); 

onRenderTick的方法,我想檢查兩個對象是否hitted

override protected function onRenderTick(event:Event=null):void { 
    super.onRenderTick(event); 
    _stick.rotationY = stage.mouseX/stage.width * 360; 
    _stick.rotationX = stage.mouseY/stage.height * 360; 

    if (stick.hitTestObject(this.ball)) { 
     trace ("hit"); 
    } 
} 

然而,stick.hitTestObject始終返回false即使棍子真的打因爲我在閃光中看到球。

任何幫助表示讚賞〜 謝謝!

+1

只是一個提示:如果您是PaperVision3D的新手,您應該切換到Away3D,甚至開始學習/使用適用於3D的Molehill(Flash Player 11)beta API。爲了所有的意圖和目的,PaperVision3D已經死亡。 – TheDarkIn1978

+0

@ TheDark1978謝謝。 – YeJiabin

回答

1

很久以前,我通過使用API​​在P3D中找到某處從3D轉換爲2D(屏幕)座標的API來解決類似問題。所以我在3D視覺效果的頂部添加了一個常規按鈕,並且每一幀我都將按鈕移到3D命中區域的屏幕位置上。但是這隻能起作用,因爲我不需要重創區域進行轉換 - 我從來沒有在Papervision3D中使用「真正的」3D命中區域。而且由於這個項目顯然是孤兒,如果你能夠幫助它,我不會建議花費大量的時間。

+0

謝謝,我會用away3d來代替。 – YeJiabin

+0

我最近在Away3D上做了一個很大的項目,可能我建議你使用away3D與jiglib結合使用。 Jiglib是一個物理庫,它非常有能力檢測到hittests。我會在開始之前查看它,因爲jiglib不使用away3D提供的默認基元。 –