如何将对象点相对于其旋转附加到另一个对象?

时间:2018-01-12 09:17:23

标签: c# rotation monogame

我在这个问题上需要帮助。我想得到黄色子弹的位置相对于那个人的旋转。有人能帮我吗 ? 我有人的位置和旋转角度(-3,2到3,2)

提前谢谢你 Guy without Rotation
Guy with Rotation(-1,5)

我已经尝试过了:

WorldOrigin:玩家位置

new Bullet(direction, new Vector2(worldOrigin.X - 10, worldOrigin.Y + 30),rotation)

要设置枪支末端的子弹,但是当我旋转我的播放器时,子弹仍然向右,而不是例如向左看时向左看。

我试图设置我画到玩家纹理的枪的原点,但那并没有起作用:(

解决方案:
现在我只是在枪上画子弹。我使用了播放器的旋转并添加了30。然后我画了一个半径为50和角度为PlayerRotation + 30的子弹。

public Bullet(Vector2 target, Vector2 pos, float rotation)
    {
        this.target = target;
        this.pos = pos;
        this.rotation = rotation;

        Vector2 newPos = new Vector2();
        newPos.X = pos.X + (float)(50 * Math.Cos(DegreeToRadian(RadianToDegree(rotation) + 30)));
        newPos.Y = pos.Y + (float)(50 * Math.Sin(DegreeToRadian(RadianToDegree(rotation) + 30)));

        this.pos = newPos;
    }

1 个答案:

答案 0 :(得分:0)

现在我只是在枪上画下子弹。我使用了播放器的旋转并添加了30。然后我画了一个半径为50和角度为PlayerRotation + 30的子弹。

public Bullet(Vector2 target, Vector2 pos, float rotation)
{
    this.target = target;
    this.pos = pos;
    this.rotation = rotation;

    Vector2 newPos = new Vector2();
    newPos.X = pos.X + (float)(50 * Math.Cos(DegreeToRadian(RadianToDegree(rotation) + 30)));
    newPos.Y = pos.Y + (float)(50 * Math.Sin(DegreeToRadian(RadianToDegree(rotation) + 30)));

    this.pos = newPos;
}