我有一个基于触摸位置移动的精灵。我使用box2d进行碰撞,当精灵与另一个物体碰撞时,我将精灵旋转180度以远离碰撞,我的目标是移动在旋转方向上碰撞x个像素的精灵基本上反弹影响。
任何人都可以告诉我如何根据旋转获得一个位于精灵前面x像素数量的位置。
由于
答案 0 :(得分:1)
您可以使用精灵的contentSize或boundingBox来计算您应该移动的像素数量。考虑到节点锚定在它们的中心,你可以做这样的事情(仅在x轴上进行更改):
sprite.position = ccp(sprite.position.x - xAmount - sprite.contentSize.width / 2, sprite.position.y)
根据您需要的方向更改总和的符号,根据需要将精灵移向xAmount。
干杯。
答案 1 :(得分:1)
您可以使用以下公式获得精灵所面对的方向:
public static Vector2 AngleToVector(float angle)
{
return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
}
它返回的矢量将精确指向您要计算的点。将其标准化,然后将其乘以您想要接触的像素数。这应该可以解决问题。
returnedVector = AngleToVector(currentAngle);
returnedVector.Normalize();
returnedVector *= x;
以上是C#代码,但您应该能够将其转换为您的语言。
答案 2 :(得分:0)
您可以将本地点转换为全局:
CGPoint global = [sprite convertoToWorldSpace:ccp(x, 0)];