2012-12-09 92 views
1

我試圖做一個Ipad遊戲。對於遊戲我想要像遊戲一樣的滾動背景:Hay Day & Clash of Clans。我爲此使用了Cocos2D,擴展名爲CCLayerPanZoom。但是這並不能帶來很好的滾動效果(當你用手指停止移動時,它不會停止,但它會緩慢地移出並緩慢地停止)。我認爲這個擴展類的縮放功能不是100%好。Cocos2D Ipad遊戲滾動

有沒有解決方案或良好的類?

Thnx。

回答

0

哦,男孩。剛剛在最近的原型中解決了這個問題:我很抱歉未來會發生什麼。有幾種方法可以做到這一點,既不乾淨也不簡單。

我發現更直觀的方法是移動相機的位置。你可以通過操縱一個場景的CCCamera來做到這一點。從這個意義上說,你將滾動世界,就像在飛機上面飛行一樣。對象之間的碰撞檢測仍然很簡單,因爲所有對象都保持其「真實世界」的位置。如果遊戲世界中的精靈在(100,100)處,並且將相機500向左滾動,則精靈仍然保持在(100,100)。

不幸的是,這引起了很多與觸摸輸入相關的問題。由於觸摸座標僅限於屏幕的分辨率,您不能再輕易地檢查「此觸摸是否在此節點上」。如果攝像機位於(1000,1000),並且您在屏幕中間觸摸了一個精靈,則該觸摸位置將在(320,280)(屏幕中間)處註冊。所有的觸摸計算現在都必須包含相機的偏移量,這可能會難以記憶並且很難反覆包含。

第二種技術是將世界放入CCLayer中,然後將該圖層移到相機下面。我發現這種方法更麻煩,所以我沒有追求它很長時間。

0

使用CCLayer並將您想要移動的所有孩子添加到此圖層中。當您想要移動所有內容時,請移動CCLayer進行更新。

對於轉換層座標到真實世界座標使用以下功能:

- (的CGRect)worldBoundingBox {

CGRect rect = CGRectMake(0, 0, contentSize_.width,contentSize_.height); 
return CGRectApplyAffineTransform(rect, [self nodeToWorldTransform]); 

}