Cocos2D Ipad游戏滚动

Cocos2D Ipad游戏滚动,ipad,cocos2d-iphone,scroll,Ipad,Cocos2d Iphone,Scroll,我想做一个Ipad游戏。对于游戏,我想要一个滚动的背景像游戏:干草日和部落冲突。为此,我使用了Cocos2D,扩展名为CCLayerPanZoom。但这并没有提供很好的滚动效果——当你停止用手指移动时,它不会停止,但它会变得轻松?走出去,慢慢地停下来。我认为这个扩展类的缩放功能不是100%好 有什么解决方案或好的课程吗 哦,孩子。刚刚在最近的一个原型中解决了这个问题:我为接下来的事情感到抱歉。有两种方法可以做到这一点,既不干净也不简单 我发现更直观的方法是移动相机的位置。可以通过操纵场景的摄影机

我想做一个Ipad游戏。对于游戏,我想要一个滚动的背景像游戏:干草日和部落冲突。为此,我使用了Cocos2D,扩展名为CCLayerPanZoom。但这并没有提供很好的滚动效果——当你停止用手指移动时,它不会停止,但它会变得轻松?走出去,慢慢地停下来。我认为这个扩展类的缩放功能不是100%好

有什么解决方案或好的课程吗


哦,孩子。刚刚在最近的一个原型中解决了这个问题:我为接下来的事情感到抱歉。有两种方法可以做到这一点,既不干净也不简单

我发现更直观的方法是移动相机的位置。可以通过操纵场景的摄影机来执行此操作。从这个意义上说,你将在世界上滚动,就像在飞机上飞行一样。对象之间的碰撞检测仍然很简单,因为所有对象都保持其“真实世界”位置。如果一个精灵在游戏世界中的位置是100100,并且您将相机向左滚动500,那么该精灵仍然保持在100100

不幸的是,这带来了许多与触摸输入相关的问题。您无法再轻松检查“此触摸是否在此节点上”,因为触摸坐标仅限于屏幕的分辨率。如果相机在10001000,你触摸屏幕中间的精灵,那么触摸位置在屏幕中间320280处注册。现在,所有触摸计算都必须包括相机的偏移量,这可能很难记住,重复计算也很麻烦


第二种技术是将世界放入一个CCLayer中,然后将该层移动到摄影机下面。我发现这种方法比较麻烦,所以我没有花很长时间来研究它。

使用CCLayer并将所有要移动的子对象添加到此层。如果要移动所有对象,请在更新中移动CCLayer

要将图层坐标转换为真实世界坐标,请使用以下函数:

-CGRectworldBoundingBox{

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