如何在触摸ccsprite后改变cocos2d中移动box2d对象的速度

时间:2012-09-14 06:15:57

标签: iphone cocos2d-iphone physics game-physics

enter image description here我正在使用cocos2d开发ios游戏。 在我的场景中,云以不同的vilocity从右向左移动。 1)我只是想当用户点击云时它从左到右移动得更快。 2)当云层出现在视野之外时,它会再次从左侧出现并以正常速度开始向左移动。

2 个答案:

答案 0 :(得分:0)

你如何从左到右移动云?使用CCMoveTo还是ApplyLinearVelocity?

如果是CCMoveTo,则在用户点击时停止操作,然后再次以不同的速度运行CCMoveTo。

答案 1 :(得分:0)

1.)检测用户触摸的云,增加身体的速度。要立即提高速度,请设置与云相关的b2body的线速度。要逐渐提高速度,请施加力/冲动。例如:

ccTouchesBegan中的

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位置移动到视图之外的时间。然后你可以用sprite破坏云体并在所需位置创建一个新体,或者使用b2Body-> SetTransform()通过SetLinearVelocity(startingSpeed)将体移动到新位置