Cocos2d:如何通过触摸移动精灵来增加动量?

时间:2013-01-08 15:58:12

标签: iphone objective-c ios cocos2d-iphone

我使用以下代码在我的应用程序中移动精灵:

- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [touches anyObject];

    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];

    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
    oldTouchLocation = [[CCDirector sharedDirector] convertToGL:oldTouchLocation];
    oldTouchLocation = [self convertToNodeSpace:oldTouchLocation];

    CGPoint translation = ccpSub(touchLocation, oldTouchLocation);
    CGPoint newPos = ccpAdd(self.position, translation);

    self.position = newPos;
}

它工作正常,但精灵随着取景器在屏幕上移动。

我想要实现的是刷卡后的某种动力, 就像在iOS中构建应用程序一样。

有人能给我一些如何做到这一点吗?

1 个答案:

答案 0 :(得分:0)

当你让物体离开时,你可以简单地获得速度(以每秒px为单位),

(thisTouchPosition.x - lastTouchPosition.x) / (thisTouchTime - lastTouchTime)

然后为您希望对象在释放时的“减速”(也以每秒px 0.0-1.0)制作比例因子。 SLOWDOWN越低,减速越快。在你的渲染循环中,你的位置应该有用。 FPS是您的周期率。

SPEED *= SLOWDOWN
x = x + SPEED / FPS

如果你没有渲染循环(你应该),那么你需要制作一个NSTimer并在完成时使其无效或产生另一个线程来执行此操作。

这是未经测试的,但应该让你去。