如何在Cocos2d-android中的spriteMoveFinished方法中获得一个轮子的CGRect?

时间:2014-06-19 05:49:16

标签: android cgrect cocos2d-android

我正在开发一款使用Cocos2d的游戏,我面临的问题是获得我已经放置在锚点(0.5,0.5)并且位于win-size width / 2-height / 2.I的轮子的CGRect我正在使用CGRect.intersects(CGRect a,CGRect b)检测轮子上的触摸,我遇到了问题。

我正在尝试这个以获得轮子CGRect位置

CGRect wheelrect=CGRect.make(wheel.getPosition().x-(wheel.getContentSize().width), 
                                     wheel.getPosition().y-(wheel.getContentSize().height), 
                                     wheel.getContentSize().getWidth(), 
                                     wheel.getContentSize().getHeight());

我正在获得左半轮的CGRect,但我需要检测整个车轮上的触摸。

我正在使用CGRect的Intersect方法来跟踪交叉点。

需要一些帮助。谢谢。 This is how it is happening

2 个答案:

答案 0 :(得分:2)

是否有boundingBox方法或属性?如果是这样,你可以使用它。

无论如何,你的问题是你从位置中减去contentSize,但是你需要在减去它之前将contentSize与anchorPoint(即contentSize的一半)相乘。

答案 1 :(得分:2)

以及这些功能如何:)

wheel.getBoundingBox().contains(x, y) wheel.getBoundingBox().containsPoint(aRect, aPoint)

wheel.getBoundingBox().containsRect(aRect, bRect)

我更喜欢使用

wheel.getBoundingBox().size.width

大于

wheel.getContentSize().width

因为缩放CCSprite时,可能会出现错误的大小。

修改

CGRect wheelrect = CGRect.make(
            wheel.getPosition().x - (wheel.getBoundingBox().size.width / 2f), wheel.getPosition().y - (wheel.getBoundingBox().size.height / 2f), 
            wheel.getBoundingBox().size.width, wheel.getBoundingBox().size.height); 

if(CGRect.intersects(wheelrect, wheel.getBoundingBox())){
    System.out.println("intersect");
}

这对我有用。也许如果你在这里添加更多代码,我们会发现问题。