2012-01-27 30 views
1

我有一個精靈根據觸摸位置移動。我使用box2d進行碰撞,當精靈與另一個物體發生碰撞時,我將精靈旋轉180度以遠離碰撞,我的目標是移動在旋轉方向上碰撞x像素量的精靈,基本上會彈開影響。基於旋轉獲取精靈前面的位置

任何人都可以告訴我,我怎麼能得到一個位置,這是基於旋轉的精靈前像素的x。

感謝

回答

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#代碼,但您應該可以將其轉換爲您的語言。

1

可以使用contentSize或boundingBox的精靈來計算你應該移動的像素數量。根據定向

sprite.position = ccp(sprite.position.x - xAmount - sprite.contentSize.width/2, sprite.position.y) 

變化和的跡象,你需要向移動精靈:考慮到節點在其中心掛靠,你可以做這樣的事情(只在x軸的變化)和你需要的xAmount。

乾杯。

0

你可以只是轉換局部點到全球:

CGPoint global = [sprite convertoToWorldSpace:ccp(x, 0)];