我正在尝试制作一个平台游戏,其中平台从屏幕右侧移动到屏幕左侧。并且在屏幕中间初始化了英雄。
平台是 b2_kinematicBody,而英雄是 b2_dynamic body。一旦我跳上平台,英雄就开始随着平台移动到屏幕的左侧。
我的问题是:如何防止英雄移动到屏幕左侧?我想让英雄始终保持在屏幕中间,给人一种他正在行走的印象,因为所有平台都在他身后向左移动。
请帮忙。任何指导将不胜感激。谢谢
我正在尝试制作一个平台游戏,其中平台从屏幕右侧移动到屏幕左侧。并且在屏幕中间初始化了英雄。
平台是 b2_kinematicBody,而英雄是 b2_dynamic body。一旦我跳上平台,英雄就开始随着平台移动到屏幕的左侧。
我的问题是:如何防止英雄移动到屏幕左侧?我想让英雄始终保持在屏幕中间,给人一种他正在行走的印象,因为所有平台都在他身后向左移动。
请帮忙。任何指导将不胜感激。谢谢
您的所有场景平台/对象可能都有一个主要空白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)。
您需要 2 个CCLayer
,一个作为整个场景的容器,另一个作为英雄和其他团队成员(如果存在)的容器。
您必须计算场景图层的边界是否超出屏幕。如果它到达屏幕边界,请移动你的英雄。否则将英雄保持在角色层的中心并移动场景层。
不要把人物和场景放在同一层,这样计算起来会复杂很多。