我正在尝试制作一款平台游戏,平台从屏幕右侧移动到屏幕左侧。并且英雄在屏幕中间初始化。
平台是b2_kinematicBody,而英雄是b2_dynamic主体。一旦我跳上平台,英雄开始移动到屏幕的左侧以及平台。
我的问题是:如何阻止英雄移动到屏幕的左侧?我想让英雄始终保持在屏幕的中间位置,给人一种他正在行走的印象,因为所有的平台都在他身后向左移动。
请帮忙。任何指导将不胜感激。感谢
答案 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
,一个作为整个场景的容器,另一个作为英雄和其他团队成员的容器(如果它们存在)。
您必须计算场景图层的边框是否在屏幕之外。如果它到达屏幕边框,请移动你的英雄。否则将英雄放在角色图层的中心并移动场景图层。
不要将字符和场景放在同一层中,因为它会使计算更加复杂。