我有一行,这是使用此代码制作的精灵
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位置?
希望你们能帮助我。
提前致谢!
答案 0 :(得分:0)
您应该查找CGRectApplyAffineTransform
,CGAffineTransformMakeRotation
以及可能CGAffineTransformMakeTranslation
的文档。
答案 1 :(得分:0)
我很难知道我是否理解正确,但是当你说“...线的另一边的另一个x& y位置”时,我假设你的意思是什么是坐标线的相反端点。
如果是这样,我相信您可能正在寻找的实际公式是:
{x2,y2] =点你要找
但正如我前面提到的,我有点不确定这是否会给你你所需要的。如果您实际上正在寻找Line.png的边界框另一侧顶点的点,那么也许您仍然可以使用该公式,但将度数更改为90以确定偏离x&的坐标。你已经知道了。
无论如何,我希望至少可以帮助你找到一个有用的方向。