2014-05-22 65 views
-1

我正在使用Actionscript 2製作一臺平臺。我得到了跳躍和重力,一切都在進行,但我僅限於一個「地面」。正如人們可以想象的那樣,演奏者需要多個「理由」才能跳上跳下。我嘗試編輯「地面」電影剪輯,以便在它們之間沒有任何內容的情況下進行幾個模塊,但是當我嘗試這樣做時,我的角色會跳躍,落在其跳躍的頂點,然後重複該過程直到它落到頂部地面影片剪輯,然後經常表現,跳躍和着陸在地面動畫片的頂部,即使沒有地面動畫片的一部分着陸。Actionscript 2 - hitTesting多個實例

這是我的地面重力代碼。

if(this.hitTest(_root.ground)) 
{ 
    this._y -= gravity; 
    gravity = 0; 
    jumping = false; 
} 

回答

0

當你們兩個影片剪輯之間的使用則hitTest,這並不重要,如果有影片剪輯裏面沒有的,只要hittesting影片剪輯是內部邊界框(一個影片剪輯的藍色外矩形,當你選擇它)其他動畫片段。

爲了解決你的問題,但仍然有在同一個影片剪輯許多理由,你必須使用則hitTest,hitTest(x, y, shapeFlag)的第二次使用 - 這不會檢查兩個影片剪輯都hittesting對方,而是如果一個影片剪輯是觸摸一個POINT(只是一個x和ay座標)。但是使用這個真正的優勢是第三個參數,shapeFlag的,這是一個布爾值() - 如果它是,那麼則hitTest將整個影片剪輯進去,這意味着即使有空格,那些將被包含在hitTest中,如果它是true,那麼在hitTest期間只會考慮MovieClip的實際形狀。

首先,你必須進入角色的MovieClip並移動他,以便動畫片段的註冊點(你知道那個小加號)位於角色的底部。然後,你的代碼改成這樣:

if(_root.ground.hitTest(this._x, this._y, true)) 
{ 
    this._y -= gravity; 
    gravity = 0; 
    jumping = false; 
} 

這將檢查地面影片剪輯的形狀(意味着只有平臺,而不是它們之間的空白空間)的觸摸你的影片剪輯,註冊點,這位於角色的底部,腳下。所以,只要你的角色的腳觸及地面 movieclip中的任何平臺,代碼將被執行,你的角色將停止。

希望這會有所幫助:)