我已设法使用以下代码使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。如果它被触摸,我怎么能让它成为可拖动的呢?
答案 0 :(得分:0)
我认为您的touchMoved:
方法本身就在场景中,这就是您独立接触屏幕触摸位置的原因(这是正确的)。
要仅在触摸节点时移动节点,请尝试检查您触摸精灵的touchBegan:
,并设置一个标记变量,稍后您将检入touchMoved:
touchBegan:
中的类似内容:
if (CGRectContainsPoint(_foodNode.boundingBox, touchLocation))
_shouldDragMyNode = YES;
else
_shouldDragMyNode = NO;
然后在touchMoved
:仅在_shouldDragMyNode
为YES
的情况下更改位置:
if (_shouldDragMyNode)
_foodNode.position = touchLocation;
抱歉,目前无法测试代码。但是这样的事情应该有效。