2013-08-07 42 views
2

因此,我正試圖在我的遊戲中獲得一個非常基本的「手電筒」風格的東西。ccDraw。填滿屏幕上的任何地方除了精靈

我的工作方式是在我的遊戲屏幕上繪製一個圖層,並且該圖層將繪製一個黑色矩形,其大小爲80%不透明度,從而在我的遊戲場景上創建黑暗的外觀。

ccDrawSolidRect(ccp(0,0), ccp(480,320), ccc4f(0, 0, 0, 0.8)); 

我想要做的是無處不在畫這個矩形的屏幕上,除了視覺的周圍錐,將代表「光源」。

這將創建一個黑暗的覆蓋層,除了光之外,給它一個火炬/燈光/手電筒的錯覺。

我能預見到這種情況發生的唯一方法是使用ccDrawSolidPoly(),但由於光源的位置發生變化,所以poly的頂點也會變化。

關於如何實現這一點的任何建議將是偉大的。

+1

你能上傳一張描述你想要得到的圖片嗎? – brigadir

回答

1

您可以使用ccDrawSolidPoly()並避免必須手動更新頂點。爲此,您可以創建代表您的燈光對象的CCNode的新子類,並在其-(void)draw方法中執行您的自定義形狀繪製。

ccDraw...()功能將提請相對於本地精靈座標,這樣你就可以移動和旋轉你​​的新的精靈,以滿足您的需求和的cocos2d會做的頂點變換爲您服務。


更新:我發現,你可能會更好繼承CCDrawNode而不是CCNode,因爲它爲原料OpenGL繪圖(OpenGL的vertexArrayBuffer和vertexBufferObject內部變量和頂點,它們的顏色緩衝部分設施和他們的texCoords)。如果你的東西很簡單,也許子類CCNode就足夠了。

+0

這^。很好的答案,是我之後的事情 – SamBo

0

是否可以將png用作蒙板,如上面的圖層 就像您有時在漫畫中看到的雙眼視覺一樣? 或相似變暗,因爲它向外生長到病房屏幕

只是一個想法反正邊緣的Photoshop的面具過濾器...

的更多的你的努力解釋照片可能是好的