自上而下的3D Raycast到鼠标点(内部代码)

问题描述 投票:0回答:1

我正在从枪尖处的空变换投射光线。投射将朝向右键单击鼠标的位置。意外的结果是命中点距离预期的一半。

我试图重新制作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上的hit.point,但它总是一半。

Issue example, Green is expected and red is actual

unity3d raycasting
1个回答
0
投票

我认为您使用世界位置(点)。尝试将您的point参数转换为direction。

Vector3 dir = point - Raycaster.transform.position;
Physics.Raycast(Raycaster.transform.position, dir, out hit)
© www.soinside.com 2019 - 2024. All rights reserved.