向LineRenderer方向射击射弹

时间:2018-06-12 07:27:33

标签: c# unity3d

我有一个由{3}组成的LineRenderer。我想从第三点朝第三点射击射弹。

我试图获得两个位置,在第二个位置实例化并朝第三个位置向前射击,但是我的射弹有点偏离它们应该去的位置。

有一种射击我之前使用过的射弹的方法,当我只有LineRenderer只有2分时,这种方法有效。我从https://unity3d.com/learn/tutorials/topics/physics/brick-shooter得到了这个想法。

public void Shoot()
{
    shotPosL = laserPointerL.GetComponent<Transform>();           //get the position of the beginning of the laser pointer
    Rigidbody shotL = Instantiate(projectile, shotPosL.position, shotPosL.rotation) as Rigidbody;      //instantiate a new projectile 
    shotL.AddForce(shotPosL.forward * shotForce);             //throw the projectile in the direction of the laser pointer
}

但是自从我向LineRenderer添加了第三个点后,射弹只是直接从屏幕中间向后移动。

编辑:有人判断我的信息没有用或不清楚,对不起,很难解释。如果它有帮助,我的当前代码。

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
}

2 个答案:

答案 0 :(得分:1)

您是否可以在LineRenderer组件上使用GetPosition()或GetPositions()来获取所需的位置和方向?

https://docs.unity3d.com/ScriptReference/LineRenderer.html

答案 1 :(得分:0)

假设您的积分被定义为

Vector3 point1;
Vector3 point2;

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

rb.AddForce.((point2-point1).normalized*shotForce);