可拖动的CCNode Cocos2d

时间:2014-06-16 16:22:34

标签: ios cocos2d-iphone

我已设法使用以下代码使CCNode可拖动:

- (void)touchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGPoint touchLocation = [touch locationInNode:self];
    // start catapult dragging when a touch inside of the catapult arm occurs
    if (CGRectContainsPoint([_heroContainer boundingBox], touchLocation))
    {
        NSLog(@"YUM YUM");
    }

    _foodNode.position = touchLocation;
}

这样可行,但如果我触摸并拖动屏幕上的任何位置,它会移动CCNode。如果它被触摸,我怎么能让它成为可拖动的呢?

1 个答案:

答案 0 :(得分:0)

我认为您的touchMoved:方法本身就在场景中,这就是您独立接触屏幕触摸位置的原因(这是正确的)。

要仅在触摸节点时移动节点,请尝试检查您触摸精灵的touchBegan:,并设置一个标记变量,稍后您将检入touchMoved:

touchBegan:中的类似内容:

if (CGRectContainsPoint(_foodNode.boundingBox, touchLocation))
 _shouldDragMyNode = YES;
else
 _shouldDragMyNode = NO;

然后在touchMoved:仅在_shouldDragMyNodeYES的情况下更改位置:

if (_shouldDragMyNode)
 _foodNode.position = touchLocation;

抱歉,目前无法测试代码。但是这样的事情应该有效。