我正在使用cocos2d开发ios游戏。 在我的场景中,云以不同的vilocity从右向左移动。 1)我只是想当用户点击云时它从左到右移动得更快。 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)将体移动到新位置