我有一个由{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
}
答案 0 :(得分:1)
您是否可以在LineRenderer组件上使用GetPosition()或GetPositions()来获取所需的位置和方向?
答案 1 :(得分:0)
假设您的积分被定义为
Vector3 point1;
Vector3 point2;
从1到2的力应该有一个方向(point2-point1) - 你应该从终点减去起点以获得方向。 使用
rb.AddForce.((point2-point1).normalized*shotForce);