C# 沿直线渲染器的方向发射射弹

C# 沿直线渲染器的方向发射射弹,c#,unity3d,C#,Unity3d,我有一个由3个点组成的LineRenderer。我想从第二个点朝第三个点的方向发射一颗子弹 我试着得到两个位置,在第二个位置实例化,然后朝第三个方向向前射击,但是我的射弹稍微偏离了它们应该去的地方 有一种方法可以拍摄我以前使用过的投射物,当我有一个只有2个点的LineRenderer时,这种方法很有效。我是从你那里得到这个主意的 不能在LineRenderer组件上使用GetPosition()或GetPositions()来获取所需的位置和方向吗 假设您的点定义为 Vector3 point1

我有一个由3个点组成的
LineRenderer
。我想从第二个点朝第三个点的方向发射一颗子弹

我试着得到两个位置,在第二个位置实例化,然后朝第三个方向向前射击,但是我的射弹稍微偏离了它们应该去的地方

有一种方法可以拍摄我以前使用过的投射物,当我有一个只有2个点的
LineRenderer
时,这种方法很有效。我是从你那里得到这个主意的


不能在LineRenderer组件上使用GetPosition()或GetPositions()来获取所需的位置和方向吗


假设您的点定义为

Vector3 point1;
Vector3 point2;
从1到2的力应该有一个方向(点2-点1)-你应该从终点减去起点得到方向。 使用


是的,我就是这么做的,但是投射物并没有精确地到达我的LineRenderer所指向的位置,总是会有一些移动。当您调用'shotL.AddForce(laserLeftTarget*shotForce);'你给它一个左目标的位置,你应该给它一个方向。通过减去向量,可以得到第二个点到第三个点的方向,例如var direction=thirdPoint-secondPoint;好吧,我不太明白为什么这个操作会给出一个方向,但它是有效的!我必须学习更多关于向量的知识。非常感谢。确保对减去矢量得到的方向进行规格化,否则方向将被缩放,并可能影响移动速率。
public void Shoot()
{
    Quaternion noRotation = Quaternion.Euler(0, 0, 0);

    LineRenderer laserL = laserPointerL.GetComponent<LineRenderer>();
    Vector3 kneeLeftPosition = laserL.GetPosition(1);
    Vector3 laserLeftTarget = laserL.GetPosition(2);
    Rigidbody shotL = Instantiate(projectile, kneeLeftPosition, noRotation) as Rigidbody;      //instantiate a new projectile 
    shotL.AddForce(laserLeftTarget * shotForce);             //throw the projectile in the direction of the laser pointer
}
Vector3 point1;
Vector3 point2;
rb.AddForce.((point2-point1).normalized*shotForce);