0

在此处输入图像描述我正在使用 cocos2d 开发 ios 游戏。在我的场景中,云以不同的速度从右到左移动。1)我只想当用户点击云时它从左到右移动得更快。2)当云离开视野时,它会再次从左侧出现并开始以正常速度向左移动。

4

2 回答 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 回答