我正在尝试根据屏幕上的滑动方向移动精灵。到目前为止,这是我根据互联网上的示例提出的代码:
-(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度之间做动作,而不是通过向侧面或向下滑动。我该如何实现呢?
答案 0 :(得分:1)
我在理解你的问题时遇到了一些麻烦。但是,如果您只想向上滑动,则应执行以下操作:
touchEnd.y - beginTouch.y
。float slope = (touchEnd.y - touchBegin.y)/(touchEnd.x - touchBegin.x)
。if (abs(slope) >= threshold) { //It's an upward swipe }
不确定您的目标是什么:
例如,它应该大于100但小于150。
但是如果你想限制向上滑动所构成的角度,你可以这样做:
tan(theta)
)请查看第二个等式here,了解使用tan(theta)
的原因。threshold = tan((pi/180)*30)