2010-11-03 52 views
1

我在談論的「切割」效果可以在着名的iPhone遊戲「水果忍者」和「剪下繩子」中看到,也就是說,當您將手指移過屏幕時,模擬切割刀的效果。如何在iPhone上實現切割效果?

我想知道這種效果的名稱以及它是如何實現的。 任何人都可以給我一個提示嗎?

回答

2

這取決於你迄今爲止如何實現你的遊戲,即使用類似於Cocoa或使用OpenGL的2D圖形。例如,水果忍者使用後者,因爲它的水果是3D模型。在這種情況下,您的Render()鏈通常會繪製所有3D對象,然後將投影更改爲拼寫,以在所有內容之上呈現像精靈字體或未轉換的2D精靈(如HUD)。這些「精靈」中的每一個都是一個四邊形(2個三角形形成一個矩形),其中映射了一個紋理圖像。一旦將紋理加載到圖形內存中,GPU可以非常快地將其繪製在&上,並且無需額外成本即可對其進行拉伸或旋轉!

這就是我要做的方式:帶透明紋理的四邊形,看起來像你想要的「條紋」。然後觀察觸摸點並跟蹤之前(或之前的多個)觸摸座標。計算兩點之間的距離(谷歌「距離公式」)和它的角度矢量(只有兩個除法操作在deltaX,deltaY現在你有距離)。將這些應用到將用於變換四邊形的4x4矩陣,以便拉伸它(按距離縮放X),根據矢量旋轉它,並將其轉換爲最近觸摸點的X,Y。當觸摸擡起時,您可以輕鬆收縮/淡化條紋。

還有另一種方法可以用來處理彎曲的滑動。這是更困難的,但會更好看。在應用「條紋」圖像時使用TRIANGLE STRIP(紋理座標爲0.0到1.0)沿着其長度的頂點。然後基於所有先前的觸點,自行設置所有頂點座標,計算點之間的直線並垂直偏移頂點。合理?但願如此!這種方法很有趣,並不像聽起來那麼痛苦,我保證!

+0

這真是一個很好的答案,謝謝。我將使用2D圖形(cocos2d lib)來實現該效果。我試圖用下面的方法來做到這一點:1)創建一個代表軌跡的圖像,例如16x16的白色塊; 2)在手指位置的每一幀上繪製圖像; 3)對繪製的圖像應用阿爾法淡入淡出效果。但是軌跡圖像是分散的,而不是連續的。根據你的回答,似乎每幀我都要計算兩點的距離,並在我的足跡圖像上應用變換。我會稍後再嘗試,謝謝你的回答。 – icethawless 2010-11-04 09:45:03

0

GLPaint示例可能會給你一些提示。

+0

好吧,我會看看。謝謝。 – icethawless 2010-11-04 09:49:13

相關問題