0

我有一条线,这是使用此代码制作的精灵

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 位置?

希望你们能帮帮我。

提前致谢!

4

2 回答 2

0

很难知道我是否正确理解了您,但是当您说“...线另一侧的另一个 x&y 位置”时,我假设您的意思是线的另一端的坐标是什么.

如果是这样,我相信您可能正在寻找的实际公式是:

  1. {x1, y1} = 您已有的起点
  2. {x2, y2] = 您要查找的点

    • x2 = x1 + (距离 * cosA)
    • y2 = y1 + (距离 * sinA)

但正如我之前提到的,我有点不确定这是否会为您提供所需的确切信息。如果您实际上是在寻找 Line.png 边界框另一侧的顶点的点,那么也许您仍然可以使用该公式,但将度数更改 90 以确定与 x&y 的坐标偏移量你已经知道了。

无论如何,我希望至少能帮助你找到一个有用的方向。

于 2012-06-28T05:36:45.980 回答
0

您可能应该查找文档CGRectApplyAffineTransformCGAffineTransformMakeRotation并且可能查找CGAffineTransformMakeTranslation.

于 2012-06-27T16:02:15.610 回答