2012-12-03 82 views
0

我會盡力解釋這個問題。 我想要做的是檢查對象之間的碰撞。另外子彈和敵人,如果它是子彈1和敵人1是沒有問題的,但經過一天的谷歌和嘗試像每個解決方案,我不能得到它的工作,或者我找到一個解決方案這絕對是可怕的解釋。我想讓它成爲easyer。我有MainClass.as文檔類。 它是敵人的一類,子彈的一類。正如我希望每個人都明白我不想檢查子彈是否擊中了敵人。或者相反。由於子彈是在點擊的情況下製作的,因此不可能將引用指向子彈。我嘗試過的是使用精靈容器,如果我將子彈放在敵人身上檢查,它確實有效,但是如果我將其放在下面,那麼就不會擊中敵人,它仍然會說敵人被擊中。 請注意,敵人被拖到舞臺上,因爲即將有多個。我也可以添加代碼。我嘗試過使用Array在所有敵人之間洗牌,但我無法讓它工作。Actionscript 3我需要一些人來幫助我進行碰撞檢測(hiTestObject)

我知道這是很多文字。希望someon都願意幫助我,它是如此令人沮喪...

最好的問候HFherasen!:) :)

回答

1

好吧,如果你不使用物理引擎,像Box2DFlash,也可以是令人沮喪的。

首先,你必須知道子彈的速度/幀,因爲如果它在一幀內超出目標,簡單的檢測將不起作用。 比,你應該有一個子彈的速度和方向..爲了簡單起見,讓我們使用它的一個點。 (子彈的頭部或中間) 子彈通常比目標移動的速度快很多,因此您可以假定目標已修復。 目標是可能旋轉的矩形或多邊形。

現在你有一個目標,併爲子彈(從點和方向)線。 http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/ 你可以使用這個(轉換爲as3),與目標的所有面(或只有面向子彈的面),如果一個匹配,射擊會擊中目標。 如果你的子彈速度較慢,你可以將幀的位置改變爲第一行。當你碰到目標時,你會知道。這非常快,並且運作良好。希望它有幫助。

+0

謝謝你說,這是不容易的出路。但是,當你提到物理引擎時,也許我應該檢查一下。 我檢查了鏈接,它看起來像一個非常好的解決方案,但它在同一時間是先進的。我能用物理引擎做到這一點嗎?:) 再一次,謝謝你回答我的問題!!:D –

+0

是的,你好!此外,在物理引擎中,你也可以擁有羣衆,例如,子彈可以將目標推回一點。但要小心,box2d第一次看起來相當困難,需要1-2天才能學習和理解。之後它會爲你節省很多時間。在http://www.box2dflash.org/你有源代碼和例子,但我建議去http://www.emanueleferonato.com/,因爲他有很多關於box2d的很好的教程(也是一本書)。如果你想使用GPU加速(Starling),我推薦柑橘框架。教程:http://www.gotoandlearn.com/play.php?id=171 – csomakk

+0

(您可以將碰撞檢測添加到box2d作爲事件偵聽器,並且如果您將目標定義爲不可移動,則它在碰撞後不會移動。我不知道你的應用程序,但如果它從上面的視圖,你可能不得不將重力設置爲0.否則物體會掉下來.. – csomakk