Ios 带角度的CGRect
我有一行,这是一个精灵使用此代码Ios 带角度的CGRect,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我有一行,这是一个精灵使用此代码 CGPoint diff = ccpSub(startLocation, endLocation); float rads = atan2f( diff.y, diff.x); float degs = -CC_RADIANS_TO_DEGREES(rads); float dist = ccpDistance(endLocation, startLocation); CCSprite *line = [CCSprite spriteWithFile:@"lin
CGPoint diff = ccpSub(startLocation, endLocation);
float rads = atan2f( diff.y, diff.x);
float degs = -CC_RADIANS_TO_DEGREES(rads);
float dist = ccpDistance(endLocation, startLocation);
CCSprite *line = [CCSprite spriteWithFile:@"line.png"];
[line setAnchorPoint:ccp(0.0f, 0.5f)];
[line setPosition:endLocation];
[line setScaleX:dist / line.boundingBox.size.width];
[line setRotation: degs];
line.tag = 1;
[_lines addObject:line];
[self addChild:line];
现在,在我的碰撞检测代码中,我使用以下代码创建CGRect:
CGRect lineRect = CGRectMake(
line.position.x - (line.contentSize.width/2),
line.position.y - (line.contentSize.height/2),
line.contentSize.width,
line.contentSize.height);
这当然是错误的,因为这条线是用一个角度
我试着比较一个长方形,一个正方形精灵,和这个长方形。
这个想法是一个角色在移动,玩家可以画一条线,如果角色碰到线,它会朝相反的方向反弹
我有角度,线一侧的x&y位置和线的长度。
如何获取线另一侧的其他x&y位置
希望你们能帮我
提前谢谢 您可能应该在文档中查找CgRectApplyAffineTransformMakeTransformTransform、CgAffineTransformMakeTransform以及可能的CgAffineTransformMakeTransform。很难知道我是否正确理解您的意思,但当您说……行另一侧的另一个x&y位置时,我想你指的是直线另一端的坐标 如果是这样的话,我相信你可能要寻找的实际公式是: {x1,y1}=您已经拥有的起点 {x2,y2]=您要查找的点 x2=x1+距离*cosA y2=y1+距离*sinA 但正如我前面提到的,我有点不确定这是否能满足您的需要。如果您实际上是在寻找Line.png边界框另一侧的顶点点,那么您可能仍然可以使用该公式,但可以将度数更改90以确定从x&y角度偏移的坐标至少你已经知道了
无论如何,我希望这至少能帮你找到一个有用的方向。你想测试什么样的碰撞?两条线段?一条线段和一个矩形?一条线段和一个多边形?请详细说明。谢谢你的回答,任务更新:我正试着比较一个矩形,一个方形精灵和这个矩形。这个想法是一个Racker正在移动,玩家可以画一条线,如果角色击中了线,它会向相反方向反弹。我为我的延迟响应道歉,离开了几天。你的公式是正确的!我已经在纸上测试过了。但是如何检查我的sprite a square是否击中了这条线?CGRectMake只接受一组坐标。谢谢谢谢你的帮助!这是一个关于碰撞检测最佳方法的好问题。我自己也在努力解决这个问题。这似乎是由你使用的对象的类型决定的。我不是回答这个问题的最佳人选。我在写我自己的问题,因为我似乎找不到解决这个问题的全面解决方案。你的问题这里的问题是如何在已知点、距离和角度的情况下确定x&y的位置,我想我可以帮上忙。不过,我希望你在另一方面好运!你完全正确,你回答了我原来的问题。我将开始一个关于碰撞的新问题。再次感谢!