我有一個精靈根據觸摸位置移動。我使用box2d進行碰撞,當精靈與另一個物體發生碰撞時,我將精靈旋轉180度以遠離碰撞,我的目標是移動在旋轉方向上碰撞x像素量的精靈,基本上會彈開影響。基於旋轉獲取精靈前面的位置
任何人都可以告訴我,我怎麼能得到一個位置,這是基於旋轉的精靈前像素的x。
感謝
我有一個精靈根據觸摸位置移動。我使用box2d進行碰撞,當精靈與另一個物體發生碰撞時,我將精靈旋轉180度以遠離碰撞,我的目標是移動在旋轉方向上碰撞x像素量的精靈,基本上會彈開影響。基於旋轉獲取精靈前面的位置
任何人都可以告訴我,我怎麼能得到一個位置,這是基於旋轉的精靈前像素的x。
感謝
你可以得到你的精靈用以下公式面對的方向:
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#代碼,但您應該可以將其轉換爲您的語言。
可以使用contentSize或boundingBox的精靈來計算你應該移動的像素數量。根據定向
sprite.position = ccp(sprite.position.x - xAmount - sprite.contentSize.width/2, sprite.position.y)
變化和的跡象,你需要向移動精靈:考慮到節點在其中心掛靠,你可以做這樣的事情(只在x軸的變化)和你需要的xAmount。
乾杯。
你可以只是轉換局部點到全球:
CGPoint global = [sprite convertoToWorldSpace:ccp(x, 0)];