Cocos2dx:移动平台游戏所需的帮助

时间:2013-04-12 22:43:47

标签: android windows cocos2d-iphone box2d cocos2d-x

我正在尝试制作一款平台游戏,平台从屏幕右侧移动到屏幕左侧。并且英雄在屏幕中间初始化。

平台是b2_kinematicBody,而英雄是b2_dynamic主体。一旦我跳上平台,英雄开始移动到屏幕的左侧以及平台。

我的问题是:如何阻止英雄移动到屏幕的左侧?我想让英雄始终保持在屏幕的中间位置,给人一种他正在行走的印象,因为所有的平台都在他身后向左移动。

请帮忙。任何指导将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

对于所有场景平台/对象,您可能都有一个主空格CCNode,其中也将是您的英雄CCSprite

然后,您只需要根据英雄的动作移动虚空CCNode,这样英雄精灵将始终位于中心(当您没有到达场景边缘时),并且场景将移动。像这样的东西.-

float positionX = heroSprite->getPosition().x;
if (positionX > 0) {
    float offset = positionX;
    voidNode->setPosition(ccp(MAX(-offset, -TOTAL_LEVEL_WIDTH + CANVAS_WIDTH), voidNode->getPosition().y));
}

希望它有所帮助。

注意:此代码假设屏幕中心位于点(0,0)。

答案 1 :(得分:1)

你需要2 CCLayer,一个作为整个场景的容器,另一个作为英雄和其他团队成员的容器(如果它们存在)。

您必须计算场景图层的边框是否在屏幕之外。如果它到达屏幕边框,请移动你的英雄。否则将英雄放在角色图层的中心并移动场景图层。

不要将字符和场景放在同一层中,因为它会使计算更加复杂。

相关问题