如何旋转矢量

时间:2017-07-23 23:19:41

标签: c# vector rotation var

我一直在搜索大量的论坛,但没有任何工作(或理解)。 所以我有这个

public void OnFinishCasting(Champion owner, Spell spell, Unit target)
    {
        var current = new Vector2(owner.X, owner.Y);
        var to = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
        var range = to * 1150;
        var trueCoords = current + range;

我会向你解释它的作用。 当我按下Q按钮时,它会向鼠标方向射出一个射弹,我需要的是制作另一个射弹并将其射向另一个方向,如锥形或其他东西,无论它在哪里,只需旋转它我喜欢的方式。 怎么做 ?

1 个答案:

答案 0 :(得分:1)

根据您所说的内容:

  

制造另一个射弹并朝另一个方向射击......,不   无论去哪里

我只会在X&添加一些随机值。

new Vector2(spell.X + intRndX, spell.Y + intRndY)


根据后续评论更新

试试这个:

public static class Vector2Extensions
{
    public static Vector2 Rotate(this Vector2 v, double degrees)
    {
        return new Vector2(
            (float)(v.X * Math.Cos(degrees) - v.Y * Math.Sin(degrees)),
            (float)(v.X * Math.Sin(degrees) + v.Y * Math.Cos(degrees))
        );
    }
}

这将为Vector2类添加扩展名,您可以调用:

trueCoords.Rotate(Math.PI/90)

获取新的载体