首页 > 解决方案 > Unity3d - 什么是 linecast hit.normal

问题描述

我试图了解hit.normal线播返回的内容。这是检查字符斜率限制的简单方法,我唯一想知道的是它是hit.normal什么?


private void check_slope_limit() {
    // Var
    var hit_angle = 0f;

    // Raycast
    RaycastHit hit;

    // Line of direction: if hit ground layer
    if (
        Physics.Linecast(transform.position + Vector3.up, transform.position + direction.normalized, out hit, ground_layer)
    ){
        hit_angle = Vector3.Angle(Vector3.up, hit.normal);

        var target_point = hit.point + direction.normalized;

        Debug.DrawLine(transform.position + Vector3.up, transform.position + direction.normalized, Color.yellow);

        if (
            hit_angle > slope_limit 
            &&
            Physics.Linecast(transform.position + Vector3.up, target_point, out hit, ground_layer)
        ){
            if (hit_angle > slope_limit){
                move = false;
                return;
            }
        }
    }
    move = true;
}

图片


我真的很讨厌不了解就做某事

标签: unity3dphysicsraycasting

解决方案


这是命中点表面的法线:

命中法线图


推荐阅读