ios - 移动层导致物理对象留在原地

标签 ios iphone cocos2d-iphone

我正在摆弄 cocos2d v3 与 sprite builder 的结合。

该游戏是一款简单的捕捉和躲避游戏,物体掉落,英雄站在屏幕底部,您可以使用加速度计移动他。

我有一个关卡文件 (cclayer),其中包含一些对象 (ccnode),并且启用了物理。 在我的更新功能中,我将图层缓慢向下移动。

如果对象启用了物理,它们就会掉落。如果我将它切换到静力学物理,它们会留在原地。

我能找到的将对象与层一起移动的唯一方法是完全关闭物理。但随后碰撞将不再起作用......

这让我在过去 4 个小时左右的时间里一直在购买。

这种情况的最佳方法是什么?

提前谢谢大家!

这是我的更新函数:

    - (void)update:(CCTime)delta {


float maxX = winSize.width - _hero.contentSize.width/2;
float minX = _hero.contentSize.width/2;


CMAccelerometerData *accelerometerData = _motionManager.accelerometerData;
CMAcceleration acceleration = accelerometerData.acceleration;
CGFloat newXPosition = _hero.position.x + acceleration.x * 1000 * delta;
newXPosition = clampf(newXPosition, minX, maxX);
_hero.position = CGPointMake(newXPosition, _hero.position.y);



//level position

CGPoint oldLayerPosition = _levelNode.position;

float xNew = oldLayerPosition.x;
float yNew = oldLayerPosition.y -1.4f;

_levelNode.position = ccp(xNew, yNew);

最佳答案

这是在物理引擎中做出的设计决定。 物理体不随 parent 移动。参见:https://github.com/cocos2d/cocos2d-iphone/issues/570

您需要更改游戏设计,让您的英雄移动,而障碍物保持在同一位置。然后你实现一个类似相机的机制来跟随你移动的英雄。

我们在 flappy bird tutorial 中使用了相同的方法.

关于ios - 移动层导致物理对象留在原地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285134/

相关文章:

iphone - 什么时候设置 kAudioUnitProperty_StreamFormat?

iphone - 如何让 UIKeyboard 变黑?

iphone - 在 iOS 中查看内存使用情况

objective-c - Apple Mach-O 链接器 (Id) 错误!!不知道该怎么办

ios - 为 iOS 推送通知准备证书?

ios - 在导入 Swift header 的桥接 header 中导入文件

iphone - 如何将 Cocos2d 应用程序缩放到 iPhone 5 屏幕?

ios - 着色器程序在 Cocos2d 2.2 Obj.C iOS 12 中无法运行

ios - Provision Profile 不包含签名证书

javascript - 想要使用 js 文件在 iDevice 中的指定点注入(inject)触摸或点击