Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# unity2D中的光线投射_C#_Unity3d - Fatal编程技术网

C# unity2D中的光线投射

C# unity2D中的光线投射,c#,unity3d,C#,Unity3d,我正在尝试创建一个脚本,当游戏对象检测到某个东西时,它将沿着光线投射移动,并且由于某种原因,3d中的某个东西正在发生并扰乱了光线投射的方向 ''' ''' 您可以忽略此部分堆栈溢出希望我添加更多详细信息,但我不知道还需要添加什么。主要错误是:期望作为参数的当前位置和目标位置不是一个方向 而不是 transform.position = Vector2.MoveTowards(transform.position, right, speed); 你宁愿使用 transform.position

我正在尝试创建一个脚本,当游戏对象检测到某个东西时,它将沿着光线投射移动,并且由于某种原因,3d中的某个东西正在发生并扰乱了光线投射的方向

'''

''' 您可以忽略此部分堆栈溢出希望我添加更多详细信息,但我不知道还需要添加什么。

主要错误是:期望作为参数的当前位置目标位置不是一个方向

而不是

transform.position = Vector2.MoveTowards(transform.position, right, speed);
你宁愿使用

transform.position = Vector2.MoveTowards(position, position + right, speed);
现在这仍然是错误的!如果你的命中率更高怎么办?前面提到的解决方案可能会超出范围。因此,您宁愿使用实际的最大目标位置,只需使用

transform.position = Vector2.MoveTowards(position, hitInfoR.point, speed);

不过,还有一些进一步的说明

  • 如果你的多个光线投射命中了什么呢

    → 您宁愿一次进行一次光线投射检查,并在第一次击中后停止

  • 顺便说一句,你知道已经存在
    Vector2.up
    Vector2.down
    Vector2.right
    Vector2.left

  • 一般来说,
    Vector2是一个结构
    ,并通过值存储

    Vector2 position = new Vector2(transform.position.x, transform.position.y); 
    
    这是相当多余的。。照办

    Vector2 position = transform.position; 
    
Vector2 position = transform.position;