首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变触摸ccsprite后在cocos2d中移动box2d对象的速度

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

Stack Overflow用户
提问于 2012-09-14 14:15:57
回答 2查看 1.5K关注 0票数 0

我正在使用cocos2d开发一款ios游戏。在我的场景中,云以不同的速度从右向左移动。1)我只是希望当用户点击一个云时,它会从左到右移动得更快。2)当云层离开视线时,它会再次从左侧出现,并开始以正常速度向左侧移动。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-15 03:31:03

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

在ccTouchesBegan中

代码语言:javascript
复制
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.)在update方法中检测云b2body位置何时移出视图。然后,您可以使用sprite销毁云体并在所需位置创建新的云体,或者使用b2Body->SetTransform()使用SetLinearVelocity( startingSpeed)将云体移动到新位置。

票数 0
EN

Stack Overflow用户

发布于 2012-09-15 03:25:04

如何将云从左向右移动?使用CCMoveTo还是ApplyLinearVelocity?

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12419076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档