如何在cocos2dandroid中的spriteMoveFinished方法中获得轮子的CGRect?

如何在cocos2dandroid中的spriteMoveFinished方法中获得轮子的CGRect?,android,cgrect,cocos2d-android,Android,Cgrect,Cocos2d Android,我正在开发一个使用Cocos2d的游戏,我面临的问题是,当我在锚定点(0.5,0.5)和win size width/2-height/2的位置获得轮子的CGRect时。我正在检测轮子上的触摸,我面临使用CGRect.intersects(CGRect a,CGRect b)的问题 我试着这样做是为了得到车轮CGRect的位置 CGRect wheelrect=CGRect.make(wheel.getPosition().x-(wheel.getContentSize().width),

我正在开发一个使用Cocos2d的游戏,我面临的问题是,当我在锚定点(0.5,0.5)和win size width/2-height/2的位置获得轮子的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的相交方法来跟踪相交点

需要帮助。提前谢谢。
是否有边界框方法或属性?如果是的话,你可以用这个


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

是否有boundingBox方法或属性?如果是的话,你可以用这个


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

这些函数如何:)

wheel.getBoundingBox()包含(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");
}

这对我有用。如果您在此处添加更多代码,我们可能会发现问题。

这些函数如何:)

wheel.getBoundingBox()包含(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");
}

这对我有用。如果您在这里添加更多代码,我们可能会发现问题。

我搜索了boundingBox方法,但没有找到该方法或属性。我减去了contextSize,但只有一半的球体被检测到接触,另一半没有检测到相交点。我编辑了代码cgrct wheelrect=cgrct.make(wheel.getPosition().x-(wheel.getContentSize().width/2),wheel.getPosition().y-(wheel.getContentSize().height/2),wheel.getContentSize().getWidth(),wheel.getContentSize().getHeight());是否有其他库可以帮助我在android中获取任何形状的矩形并找到相交点。我搜索了boundingBox方法,但没有找到该方法或属性。我减去了contextSize,但只有一半的球体被检测到接触,另一半没有检测到相交点。我编辑了代码cgrct wheelrect=cgrct.make(wheel.getPosition().x-(wheel.getContentSize().width/2),wheel.getPosition().y-(wheel.getContentSize().height/2),wheel.getContentSize().getWidth(),wheel.getContentSize().getHeight());有没有其他库可以帮助我获得任何形状的矩形,并在android中找到相交点。我已经编辑并添加了你的尝试,但也没有获得轮子的相交点和CGRect点。红色部分只有相交点。嘿@Steve-我尝试了你的代码,但我无法获得相交点,我甚至试过这个轮子。getTexture().getHeight()/2还有宽度,在某个地方我错过了火花。我会尝试更多的代码。我已经编辑并添加了你的尝试,但是也没有得到那个轮子和CGRect点的相交点。红色部分只有相交点。嘿@Steve-我试过你的代码,但我没能得到相交点,我甚至试过这个轮子。getTexture().getHeight()/2对于宽度,我在某个地方错过了那个火花。我会尝试更多的代码。