我正在使用 cocos2d 开发 ios 游戏。在我的场景中,云以不同的速度从右到左移动。1)我只想当用户点击云时它从左到右移动得更快。2)当云离开视野时,它会再次从左侧出现并开始以正常速度向左移动。
问问题
1479 次
2 回答
0
1.)检测用户触摸的云,增加身体的速度。要立即提高速度,请设置与云相关的 b2body 的线速度。要逐渐提高速度,请施加力/脉冲。例如:
在 ccTouches 开始
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
for(Cloud *cloud in clouds) {
if (CGRectContainsPoint( cloud.boudingBox, location )) {
b2Body *b = cloud.b2Body;
b2Vec2 *currentVelocity = b->GetLinearVelocity();
b2Vec2 *newVelocity = b2Vec2(currentVelocity.x + addToSpeed, currentVelocity.y);
b->SetLinearVelocity( newVelocity );
}
}
2.) 在更新方法中检测云 b2body 位置何时移出视图。然后您可以使用精灵破坏云体并在所需位置创建一个新的,或者使用 b2Body->SetTransform() 使用 SetLinearVelocity(startingSpeed) 将云体移动到新位置
于 2012-09-14T19:31:02.880 回答
0
你的云是如何从左向右移动的?使用 CCMoveTo 或 ApplyLinearVelocity?
如果是 CCMoveTo,则在用户点击时停止操作,然后以不同的速度再次运行 CCMoveTo。
于 2012-09-14T19:25:04.333 回答