2014-02-06 52 views
0

我一直在使用修改後的Cocos2D 0.99.5版本。就位置而言,這個修改後的版本沒有任何改變,但是當我啓用視網膜時,tmx貼圖顯示正常,但是檢測到貼圖,很可能使用tileGIDAt和ccp位置以及定位精靈。這是我已經做了一些研究的已知情況,但不知道最簡單的方法來克服它。我希望在Cocos2D中編輯一些東西(在使用視網膜時使用點而不是像素)來解決這個問題,但是我沒有在網上看到任何提到這個的東西。Cocos2D:更新視網膜位置

我看到一些代碼劃分對象的位置由CC_CONTENT_SCALE_FACTOR

CGPoint objectPosition = [tmxLayer positionAt:objectTile]; 
if (CC_CONTENT_SCALE_FACTOR() == 2){ 
    objectPosition.x /= CC_CONTENT_SCALE_FACTOR(); 
    objectPosition.y /= CC_CONTENT_SCALE_FACTOR(); 
} 

檢查出在cocos2d一些方法我真的不知道在哪裏使用之後。那麼我需要做什麼更新以及我需要把它們放在哪裏?

+0

您正在使用3年以上的cocos2d版本。爲什麼? FWIW如果不是2.x,最好升級到v1.1版本。 – LearnCocos2D

+0

請問這能解決這個問題嗎?我試圖升級到2.x,但由於我擁有數百個代碼文件,所以出現了太多不兼容的事情。 – VagueExplanation

+0

不知道,但1.1和2.x肯定有更多的修復/更好的支持視網膜。您的版本絕對不支持iPad Retina和寬屏手機。至於這些變化,他們中的大多數將被重新命名爲類/方法,功能大致保持不變。你總是可以先嚐試更新到1.0.1或1.1,然後從那裏升級到2.x. – LearnCocos2D

回答

1

我遇到了同樣的問題,這裏是我發現的。

這個問題與點對像素有關,以及Cocos2d如何處理它們,這是你在你的問題中提到的。如您所知,非視網膜顯示屏上的點與視網膜顯示屏相同。非視網膜的iPhone 3GS的分辨率爲320 x 480,屏幕的中心點爲160 x 240. iPhone 4是視網膜,分辨率爲640 x 960,但中心「點「的屏幕仍然是160 x 240.

讓我們假設您的tmx地圖由32 x 32像素的圖塊組成。讓我們進一步假設你想檢查一個你的「英雄」精靈目前在的瓦片。最後,讓我們假設你的英雄精靈的位置是192 x 288.要獲得拼圖座標,你需要在邏輯上佔據你的精靈位置,並將x和y位置除以32的平鋪尺寸(我將Y協調翻轉的東西)。而不是硬編碼值32,我假設你正在使用類似下面的代碼,其中tilemap的是你已經加載地圖得到這個值:

tileMap.tileSize.width 

因此,基於192×288的位置,你的英雄在你的地圖內是6 x 9瓦。問題是,在視網膜顯示器上,192 x 288的位置是基於點的,但是32 x 32的圖塊是基於像素的。在視網膜顯示屏上,32 x 32像素實際上是16 x 16點。所以實際上,你的英雄精靈並不是在6 x 9平鋪,而是在12 x 18平鋪。

因此,解決這個問題的簡單方法是檢查視網膜顯示,如果有人嘗試嘗試要確定特定的圖塊座標,您應該將圖塊的寬度和高度除以2以將其轉換爲點。

這對我很好,我希望它對你也有幫助。

+0

仍然有很多問題,但這是我想的改善!現在我遇到了對象放置的問題,但我想我最終會弄清楚。謝謝 – VagueExplanation

+0

沒問題。樂意效勞。這對我也很痛苦,但大部分問題都與我上面描述的有關。 – Pluvius

相關問題