这个效果叫什么?

时间:2014-04-20 00:58:19

标签: ios objective-c

我正在尝试使用Xcode为iPhone应用创建效果,但不确定它的名称是什么。

我会尽我所能地描述它:

  • 目标是在屏幕上滑动球以击中目标
  • 用户不应该一直拖动它,因为这太容易了
  • 球只应在用户松开触摸后开始旅行
  • 用户滑动的速度越快"对象,它应该越快行进

这是我可以在Xcode中使用的现有效果吗?

感谢。

3 个答案:

答案 0 :(得分:2)

问:

  

这是我可以在Xcode中使用的现有效果吗?

A:无

然而,一种方法是从" 轻弹"创建 CGVector 。手势。然后将矢量作为冲动力应用于您轻弹" 轻弹"。以下内容适用于 SpriteKit 但是从" flick "获取矢量的原则。其他框架可以采用手势。

#define FLICK_SCALAR 0.5 // tweak this to alter sensitivity

我们需要一个辅助结构 -

typedef struct TouchData {
CGPoint point;
NSTimeInterval time;
} TouchData;

属性 -

@property TouchData touchOriginData;

// Touch Handling
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // store the start data
    for (UITouch *touch in touches) {
        _touchOriginData.point = [touch locationInNode:self];
        _touchOriginData.time = [touch timestamp];
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    // store the end data
    TouchData touchEndData;
    for (UITouch *touch in touches) {
        touchEndData.point = [touch locationInNode:self];
        touchEndData.time = touch.timestamp;
    }
    // calculate the impulse vector from TouchData structs
    NSTimeInterval timeTaken = touchEndData.time - _touchOriginData.time;
    CGFloat vector_x = (touchEndData.point.x - _touchOriginData.point.x) / timeTaken * FLICK_SCALAR;
    CGFloat vector_y = (touchEndData.point.y - _touchOriginData.point.y) / timeTaken * FLICK_SCALAR;
    CGVector impulseVector = CGVectorMake(vector_x, vector_y);
    // fire projectile node
    [self someMethodThatFiresWithVector:impulseVector];
}

答案 1 :(得分:0)

我会说像沙狐球一样的物理学。查看cocos2d的物理和精灵处理。看起来某人的版本有效http://www.cocos2d-iphone.org/forums/topic/an-interesting-and-free-game-hishuffle/

答案 2 :(得分:0)

它被称为弹弓效果,你可以使用游戏开发框架来实现它,例如Cocos2dSpriteKit

Cocos2D教程Link

SpriteKit教程Link