我使用以下代码在我的应用程序中移动精灵:
- (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中构建应用程序一样。
有人能给我一些如何做到这一点吗?
答案 0 :(得分:0)
当你让物体离开时,你可以简单地获得速度(以每秒px为单位),
(thisTouchPosition.x - lastTouchPosition.x) / (thisTouchTime - lastTouchTime)
然后为您希望对象在释放时的“减速”(也以每秒px 0.0-1.0)制作比例因子。 SLOWDOWN越低,减速越快。在你的渲染循环中,你的位置应该有用。 FPS是您的周期率。
SPEED *= SLOWDOWN
x = x + SPEED / FPS
如果你没有渲染循环(你应该),那么你需要制作一个NSTimer并在完成时使其无效或产生另一个线程来执行此操作。
这是未经测试的,但应该让你去。