在cocos2d中向上滑动

时间:2013-02-18 06:19:23

标签: objective-c cocos2d-iphone

我正在尝试根据屏幕上的滑动方向移动精灵。到目前为止,这是我根据互联网上的示例提出的代码:

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];
endTouch = location;

float swipeLength = endTouch.x - beginTouch.x;
float swipeY = endTouch.y - beginTouch.y;    

if(swipeY > 0)
{
 if(swipeLength == 0){
 //Do action here
}}}

现在,我的问题是,我需要限制endTouch.x范围。例如,它应该大于100但小于150.我只想在滑动向上或在某个角度之间从50到120度之间做动作,而不是通过向侧面或向下滑动。我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

我在理解你的问题时遇到了一些麻烦。但是,如果您只想向上滑动,则应执行以下操作:

  1. 获取touchEnd.y - beginTouch.y
  2. 如果结果是否定的,则不是向上滑动。
  3. 继续并找出斜率float slope = (touchEnd.y - touchBegin.y)/(touchEnd.x - touchBegin.x)
  4. 设置一个阈值,如果斜率不够陡峭,那么滑动不是向上而是横向方向。 if (abs(slope) >= threshold) { //It's an upward swipe }
  5. 不确定您的目标是什么:

      

    例如,它应该大于100但小于150。

    但是如果你想限制向上滑动所构成的角度,你可以这样做:

    1. 将度数转换为斜率(tan(theta))请查看第二个等式here,了解使用tan(theta)的原因。
    2. 因此,如果您希望斜率在90 + - 30度范围内:threshold = tan((pi/180)*30)