2013-02-23 123 views
0

好的,我已經閱讀了一些關於基礎平臺遊戲創作的文章,人們說這是最難的部分 - 在高速下進行正確的碰撞。事實上,即使我有60fps,每個刻度像50-100像素移動的物體也很難追蹤。問題是,如果它碰到牆,它會穿過它,檢測到太遠,並將對象返回到速度爲0(或跳動)的牆旁邊的定義點。但是如果我在舞臺中間有一個5像素的牆,即使在低速情況下也可能會錯過碰撞。是的,你會說「做2個區域,檢查是否有物體在一個區域,另一個區域是整個hitTest區域從中返回」,但是如果我需要隨機繪製的牆壁迷宮怎麼辦? 什麼是使薄壁物體無法通過的好方法?AS3障礙hitTest

想到一些成熟的東西,我記得惡魔城和銀河戰士,它不是AS3,但是,也許你知道他們是如何做得如此流暢?好的FPS?預測碰撞?還是沒有人像瘋狂的子彈一樣瘋狂的速度?

在開始編碼之前,我真的可以使用一些想法。我希望至少知道我正在朝着正確的方向前進,即使這很困難。最終不要結束1000行,不記得單個對象的CPU負載@ 95%XD我現在的猜測是在對象的右上,左上,下4個不可見塊,並分別統計每個側面的碰撞。但它可能會在角落裏變得醜陋。 8塊可能?

回答

1

目前,您正在檢查物體是否與框架發生相位的確切時刻相交,但是您真的想知道對象有無與最後一幀和現在之間的牆相交。你可以想象一個線條在對象之前和現在的位置之間,所以基本上你需要檢查這條線是否與牆的線相交。

這是相當古老,但tonypa有一個很好的教程here它覆蓋了所有的基礎知識。

+0

是的,我已經做到了。現在,我必須經歷最難的部分 - 找出它爲什麼仍然會出現毛刺並將物體粘在牆上。它偶爾會發生,我檢查了20次的代碼必須在ANY碰撞之前停止,如果碰撞發生,就不要移動它。如果是這樣,請將其向相反的方向移動。我想我必須弄清楚Flash如何繪製區域,以及它是否使得它們不是我期望的。 o_o像...我的符號的寬度爲30像素,但是當我編輯它時,它的像素爲30.60像素。我不知道一個程序可能像分裂這樣的像素XD – SherWood 2013-02-25 07:50:51

+0

有趣的網站一樣傲慢,感謝分享。 – SherWood 2013-02-25 07:59:41