Стрельба из снаряда в направлении LineRenderer - PullRequest
0 голосов
/ 12 июня 2018

У меня LineRenderer состоит из 3 баллов.Я хочу выстрелить снарядом из второй точки в направлении третьей.

Я пытался получить обе позиции, создать экземпляр на второй и стрелять вперед в направлении третьей, но мои снаряды были немногосдвинуто с того места, куда они должны идти.

Существует метод стрельбы из снаряда, который я использовал ранее и который работал, когда у меня был 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 голосов
/ 12 июня 2018

Предполагая, что ваши точки определены как

Vector3 point1;
Vector3 point2;

Ваша сила от 1 до 2 должна иметь направление (точка2-точка1) - вы должны вычесть начальную точку из конечной точки, чтобы получить направление.используйте

rb.AddForce.((point2-point1).normalized*shotForce);
0 голосов
/ 12 июня 2018

Разве вы не можете использовать GetPosition () или GetPositions () в компоненте LineRenderer, чтобы получить нужное положение и направления?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...