CGRect与一个angular度
我有一个线,这是一个使用这个代码的精灵
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];
现在在我的碰撞检测代码中,我使用下面的代码来创build一个CGRect:
CGRect lineRect = CGRectMake( line.position.x - (line.contentSize.width/2), line.position.y - (line.contentSize.height/2), line.contentSize.width, line.contentSize.height);
这当然是错误的,因为线是使用一个angular度。
我试图比较一个矩形,方形精灵,这个矩形。 这个想法是一个angular色正在移动,玩家可以画出一条线,如果angular色击中了线,则反方向弹起。
我有angular度,线的一边的x和y位置和线的长度。 如何获得线路另一侧的另一个x&y位置?
希望你们能帮助我。
提前致谢!
要知道我是否正确理解你有点困难,但是当你说“…线的另一侧的另一个x&y位置”时,我假定你的意思是线的相反端点的坐标是什么。
如果是这样,我相信你可能正在寻找的实际公式是:
- {x1,y1} =你已经拥有的起点
-
{x2,y2] =你正在寻找的点
- x2 = x1 +(距离* cosA)
- y2 = y1 +(距离* sinA)
但正如我前面提到的,我有点不确定这是否会给你所需要的东西。 如果您实际上正在查找Line.png的边界框的另一侧的顶点,则可能仍然可以使用该公式,但将度数更改为90,以确定x和y的坐标偏移量你已经知道了。
无论如何,我希望至less有助于把你放在一个有益的方向。
您应该查找CGRectApplyAffineTransform
, CGAffineTransformMakeRotation
和可能的CGAffineTransformMakeTranslation
的文档。