2012-08-01 18 views
0

我有一些精靈,我不知道從哪個類繼承。我目前使用CCLayer來做,因爲我可以讓所有必須添加到其類中的子元素的所有孩子,但觸摸事件被所有重疊層檢測到,並且可能不那麼聰明。因此,從外行的角度來說,我想要一個火焰噴射器,例如當我觸摸它時必須添加火焰。我這樣做,僅僅通過增加FlameThrower.h類(子類CCLayer內的火焰。如果我是子類CCSprite,我將不得不增加火焰中是無效的,以及,對我父母的班?那麼,什麼是這裏是正確的做法?對我的精靈使用CCLayer或CCSprite類嗎?

回答

1

你可能不需要subclasssing CCSprite或者CCLayer可言。

這是一個基本的cocos2d遊戲架構問題,我想會得到更多的討論。

對於遊戲我已經創建的,我使用NSObject的或CCNode作爲創建字符的基類。

這些角色控制器類運行角色AI的邏輯,擁有物理角色的物理主體,並控制一個或多個代表角色的角色。

如果字符控制器將不需要由CCNode提供的屬性或功能性,然後我子類NSObject的,這通常是用於基於物理學的字符的情況。

用戶輸入通常由HUD擁有的,但有時你會希望直接將其添加到特定的角色在遊戲世界中。在這種情況下,您可能想要爲CCLayer創建子類以添加觸摸和加速度計,或創建CCNode的子類並向觸發調度程序註冊。

通常我創造精靈在一個單獨的類,然後由該角色管理部建立並擁有一個字符。

我通常創建具有子畫面片一至四次,我有一個遊戲管理類負載這些作爲CCSpriteBatchNodes並進入CCSpriteFrameCache和所述遊戲經由世界建築物腳本引擎創建的字符,那麼,當我傳遞給需要一個參考CCSpriteBatchNode添加到該字符,以便它可以使用批處理節點向其添加字符精靈。

字符,那麼與遊戲管理或parant字符寄存器進行更新,管理,並最終破壞和清理。

對於基於物理的字符,通常甚至不需要繼承CCNode(更不用說CCLayer或CCSprite)的子類,除非您希望物理主體直接控制節點的行爲,而不是控制節點或NSObject將擁有。

+0

謝謝。是的,我也和CCNode一起去了。我坦率地不明白爲什麼CCNode和CCLayer之間沒有任何內容。我一直面臨的問題是:觸摸檢測功能的節點的邊界框由它包含的子節點定義。就我而言,這將是遊戲引擎的一個非常重要的組成部分。 – 2012-08-02 20:47:58