如何在cocos2dandroid中的spriteMoveFinished方法中获得轮子的CGRect?
我正在开发一个使用Cocos2d的游戏,我面临的问题是,当我在锚定点(0.5,0.5)和win size width/2-height/2的位置获得轮子的CGRect时。我正在检测轮子上的触摸,我面临使用CGRect.intersects(CGRect a,CGRect b)的问题 我试着这样做是为了得到车轮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),
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对于宽度,我在某个地方错过了那个火花。我会尝试更多的代码。