Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何旋转矢量_C#_Vector_Rotation_Var - Fatal编程技术网

C# 如何旋转矢量

C# 如何旋转矢量,c#,vector,rotation,var,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);

我已经在很多论坛上搜索过了,但没有什么可以合作(或理解)的。 所以我有这个

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键时,它会朝鼠标方向发射一个炮弹,我需要的是制作另一个炮弹,然后朝另一个方向发射,就像一个圆锥体或其他东西,不管它去哪里,只要按我喜欢的方式旋转它就行了。
怎么做

根据你所说的:

制造另一个炮弹,朝另一个方向发射…,不 不管它去哪里

我将只向上的X&Y添加一些随机值

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)

为了得到新向量

哦,让我纠正一下,我把句子表述错了。制作另一个投射物,但与原始投射物的拍摄角度相差90度(原始投射物拍摄的是鼠标所在的位置),我认为可能会有更多隐藏的CAPTCHA。您可以将您的项目添加到GitHub并在此处粘贴链接吗?这是投射物的Complett CS文件嘿!谢谢你帮我,但是,我是一个C#中的猴子,你能告诉我把你给我的代码放在哪里吗?再次感谢!Sure将在我的fork上执行提交: