0

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

平台是 b2_kinematicBody,而英雄是 b2_dynamic body。一旦我跳上平台,英雄就开始随着平台移动到屏幕的左侧。

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

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

4

2 回答 2

1

您的所有场景平台/对象可能都有一个主要空白CCNode,其中也将是您的 hero 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)。

于 2013-04-12T23:12:19.427 回答
1

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

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

不要把人物和场景放在同一层,这样计算起来会复杂很多。

于 2013-04-13T05:47:25.637 回答