Сверху вниз 3D Raycast в Mouse Point - PullRequest
       17

Сверху вниз 3D Raycast в Mouse Point

0 голосов
/ 27 сентября 2019

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

Я попытался переделать Raycasting и проверить документы и форумы Unity, возможно, мне не хватает так просто.Я включил код моей функции огня.Примечание «Raycaster» - это пустой игровой объект, с которого он запускается.

public void Fire(Vector3 point)
{
    RaycastHit hit;
    if(Physics.Raycast(Raycaster.transform.position, point, out hit))
    {
        Debug.DrawLine(Raycaster.transform.position, point, Color.green); //expected
        Debug.DrawLine(Raycaster.transform.position, hit.point, Color.red); //actual

        if(hit.rigidbody != null)
        {
            hit.rigidbody.AddForce(-hit.normal * weapon.Damage);
        }

        GameObject Impact = Instantiate(ImpactParticle, hit.point, Quaternion.LookRotation(hit.normal));
        Destroy(Impact, 1f);
    }

}

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

Пример проблемы, зеленый ожидается, а красный актуален

1 Ответ

0 голосов
/ 27 сентября 2019

Я думаю, что вы используете мировую позицию (точку).Попробуйте преобразовать аргумент point в направление.

Vector3 dir = point - Raycaster.transform.position;
Physics.Raycast(Raycaster.transform.position, dir, out hit)
...