我正在开发一款使用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方法来跟踪交叉点。
需要一些帮助。谢谢。
答案 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");
}
这对我有用。也许如果你在这里添加更多代码,我们会发现问题。