2

首先,我是 Cocos2D 和 Obj-C 的新手,所以我确实遇到过这样的简单问题。我的问题看起来像这样:屏幕上有一个精灵,用户必须触摸它的顶部,在仍然按下的同时向上移动一点,然后释放触摸。想象一个戴着帽子的玩家精灵,你必须触摸帽子并将手指稍微向上移动,以使他的帽子飞向那个方向。实现这一点的最佳方法是什么?

到目前为止我得到的是:

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

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:[touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
        //other stuff
}

我是否需要创建另一种方法来确定 CCTouchesBegan 位置,然后将该值提供给 CCTouchesEnded 方法,然后我在其中计算角度并使帽子飞走?或者我可以在上述方法本身中确定触摸开始的位置吗?

非常感谢您的任何回答:)

4

2 回答 2

1

您发布的该方法仅涵盖触摸结束时。这意味着它只会在用户将手指从屏幕上移开时触发。如果那是你想要的,那很好。CGPoint 变量“位置”是您想要的点。

一个 CGPoint 是两个浮点值。你将会有:

location.x
location.y

这不会告诉你触摸是从哪里开始的。正如我所说,它仅在用户将手指从屏幕上移开时触发。如果您需要知道用户触摸屏幕的位置,还有另一种方法。以下是标准的触摸方法:

// Touch first detected
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
// Touches moved
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
// User took finger off screen
- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
// Touch was somehow interrupted
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
于 2011-07-20T19:17:31.227 回答
0
UITouch *touch = [ touches anyObject];

CGPoint new_location = [touch locationInView: [touch view]];
new_location = [[CCDirector sharedDirector] convertToGL:new_location];
NSLog(@"y: %1f", new_location.x);
NSLog(@"x: %1f", new_location.y);
于 2011-07-20T11:05:15.653 回答