2012-03-16 35 views
0

我正在製作側面卷軸,併爲我製作炮塔的敵人工作。我試圖讓炮塔瞄準玩家,但我似乎無法做到。下面是我想達到的草圖:Flash - SideScroller Turret Math

enter image description here

我想要的桶(深藍色),在玩家瞄準/旋轉至指點。

我已經上傳我的場景的YouTube視頻:

http://www.youtube.com/watch?v=eeP47VoX9uA&feature=youtu.be

這是我迄今爲止(環路):

function enterFrameHandler(e : Event) : void{ 
    _turretBarrel.rotation = Math.atan2(enTarget.x, enTarget.y) * 180/Math.PI; 
} 

這樣做是唯一的旋轉桶時我跳了起來,槍管甚至沒有瞄準玩家,當我走在炮塔的另一側時,槍管也不會改變旋轉。

我的enTarget.x始終是舞臺的中心,場景(包括炮塔)左右移動(x)......只有enTarget.y移動(跳轉/高平臺)。

我對Flash和ActionScript稍有新意。如果任何人都可以幫助我,或者指引我朝着正確的方向發展,那將會很棒。

感謝

回答

0

1)確保你有正確的數字和頭像和炮塔的位置是相同的座標空間。每個人都會做一個簡單的描述。在這種情況下,您可能需要兩個剪輯的世界(相對於舞臺)位置。確保它們與屏幕左上角(0,0)相比有意義。 2)請記住_turretBarrel.rotation是一個範圍從-180到180的旋轉,因此在計算角度時需要考慮這一點。

3)確保在適當的地方使用相應的度數/弧度。 4)強制關注頭像,運行遊戲,看看邊界是否看起來不錯。然後用炮塔做同樣的事情。

另一件好事通常用於調試目的是設置某種調試圖形。即畫出你認爲是方向矢量的線,以驗證你的數字和計算。

附註: 這是大部分編程的內容;調試。假設沒有任何事實,從調試器(可能更快)或跟蹤輸出得到你的數字。如果你仍然在使用可怕的閃存專業IDE。我真的會推薦使用FlashDevelop(免費)或Flash Builder(商業版)等適當的調試器來獲得其中一個。

+0

我正在努力遵循這一點。我對AS3真的很陌生,並且很難讓我的腦袋圍繞您的指示 – 2012-03-17 09:11:17

+0

無後顧之憂。首先計算從炮塔到虛擬形象的方向矢量。 DirectionVector = PlayerPosition - TurretPosition。這兩個職位需要在同一個空間(有些在這裏http://www.actionscriptmoron.com/?p=1062解釋)。我猜這個問題的一個來源可能是一個(或兩個)剪輯是其他剪輯的子剪輯。這將使avatar_movieclip.x不是一個可靠的值,因爲它可能是相對於頭像剪輯的父剪輯(如果它有一個)。確保使用絕對位置,除非兩個剪輯都是同一父剪輯的直接子節點。 – 2012-03-18 21:56:52

0

奧利弗,它看起來像你正在計算錯誤的角度(播放器和X軸之間)的tangens。你需要的東西像下面這樣:

function enterFrameHandler(e : Event) : void{ 
    _turretBarrel.rotation = Math.atan2(enTarget.x - barrel.x, enTarget.y - barrel.y) * 180/Math.PI; 
} 
+1

它應該可能是'Math.atan2(enTarget.y - barrel.y,enTarget.x - barrel.x) – 2012-03-16 08:43:20

+0

是的!你是對的! – Eugeny89 2012-03-16 09:07:12

+0

仍然無法正常工作。我忘了提及我的player.x始終是舞臺的中心,並且場景(包括炮塔)向左/向右移動。雖然我的player.y確實移動了。 – 2012-03-16 09:20:29