0

目前,我有一个益智游戏,其中一些对象可以使用 ccTouchesBegan && ccTouchesMoved 方法移动

在 ccTouchesBegan 中调用:

if (CGRectContainsPoint(newBoundingBox, touchLocation))
    {
        //Set the selectedSprite to the sprite with newBoundingBox
    }

然后在 ccTouchesMoved 我做:

CGPoint translation = ccpSub(touchLocation, oldTouchLocation);
newPos = ccpAdd(selSprite.position, translation);
selectedSprite.position = newPos;

现在这一切都很好而且花花公子,但是,我正在移动的一些对象大约是 140x40 像素(在 320x480 iPhone 上),有时 ccTouchesBegan 方法不会承认包含 touchLocation 的边界框。

我的问题是,我可以增加对象边界框的大小,以便如果用户“错过”触摸一点,它会帮助他们吗?需要您在触摸屏上如此精确地移动障碍物,这有点令人沮丧。

编辑:对于 iPhone:

我如何获得 touchLocation,这是在 ccTouchesBegan 中:

NSSet *touchSet = [event allTouches];
int numberOfTouches = [touchSet count];
CGPoint touchLocation = [self convertTouchToNodeSpace:[touches anyObject]];

allTouches 在触摸开始时自动传递。

4

1 回答 1

0
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGPoint location = [self convertTouchToNodeSpace: touch];

    for (CCSprite *tempSprite in sprites )
    {
                //Increase the size of bounding box..
        CGRect rect=tempSprite.boundingBox;
                rect.size.height=rect.size.height + 20;
                rect.size.width=rect.size.width + 20;
        if (CGRectContainsPoint(rect, location))
        {
                   //Your stuffs
        }
    }
}
于 2013-04-07T04:51:32.430 回答