2012-10-17 137 views
1

我正在構建一個類似遊戲的生存恐怖遊戲,並希望製作一個非常漂亮的相機系統來補充機制。其中一部分是你將能夠蹲下並遮住你的臉。我想要做的相機工作是放大角色以限制玩家的視角。Flash AS3 - 在縮放和縮小時縮放播放器中的相機(縮放)

目前的MC結構,我有是:

遊戲管理員 > 產卵(這是玩家和所有的敵人) > 球員

我遇到的問題是,縮放GameMaster(這是側滾動和其他全局遊戲效果發生的地方)導致相機的居中偏移,取決於玩家距離0,0多遠。

You can see the issue clearly in this video. The red arrows point to the 0,0.

On this stackoverflow question回答說做的一切容器和中間容器0,0比要縮小圍繞目標。這對我來說是一個挑戰,因爲我將不得不爲嵌套4個MC的對象獲取適當的座標。我也不確定那些對我目前的側滾動相機會做什麼。

有沒有一種方法可以在數字上找出字符鴨子時的偏移量?這似乎是一個可行的選擇,因爲直到你放棄蹲下並且相機縮小之後,你才能移動。

如果不是,容器MC是一個不錯的選擇,或者它只是其中的一個「你必須做你應該做的。」類型的情況?

[已添加] 我也看到有關變換矩陣什麼的。那是可行的嗎?我對他們一無所知,但我認爲他們的CPU很重,對於整個比賽中普遍存在的機制來說,這不是一個好的選擇。

[附加2] 此外,我想做一個旋轉相機效果,遭受相同的0,0問題。當球員和水平旋轉一些遙遠的樞軸點時,公然展現出來。

如果一個變換矩陣可以迅速地和功能性地將0,0偏移到玩家位置,以便我可以完成所有的相機效果和改變。我認爲這可能是最好的選擇。

----接近結論---- In regards to Vespers answer。然後,我能夠補償所產生的轉換嗎? 如果是這樣,那完全回答了我的整個問題。如果沒有,我不知道如何得到我想要的結果。

+0

檢查答案:[Here](http://stackoverflow.com/questions/12648161/zoom-to-and-from-point/12649936#12649936) – Vesper

+0

好吧非常酷。現在是否有可能完成轉換? –

+0

我認爲不會,因爲這個轉變是由三個組成的,其中第二個而不是最後一個是你顯然想要補間的那個。您可以讓一個補間運行到一個沒有附加到對象的緩衝區,然後在您的輸入框偵聽器中查詢其當前值,並使用該值作爲當前比例創建一個新的變換矩陣。 – Vesper

回答

0

我認爲容器是最乾淨的解決方案。由於它將以播放器爲中心,旋轉和縮放將正常工作。你提到獲取嵌套MC的座標很難,但有一個內置函數來做到這一點:localToGlobal()

要獲得全局座標中的玩家位置,只需要做player.localToGlobal(new Point(0, 0))。這應該以全局座標返回玩家的中心。如果你的主容器是不是在全球座標(因爲它是嵌套在另一個轉化MC裏面,例如),您可以用相反的功能在容器上,從全局轉換爲本地:

container.globalToLocal(player.localToGlobal(new Point(0, 0))) 

現在,你只需要集中容器。這也可以用來模擬相機的移動。如果您在每一幀都更新容器位置,它會給玩家帶來相機效果。