unity3D-射线RaycastAll

参考文献:  

部分内容由千峰教育(莫新宇)听课笔记及Scripting API总结file:///D:/myUnity/Editor/Data/Documentation/en/ScriptReference/Physics.RaycastAll.html

Physics.RaycastAll

Parameters 参数
ray    The starting point and direction of the ray. 射线的出发点及方向
maxDistance    The max distance the rayhit is allowed to be from the start of the ray. 射线从点发出后所能达到的最大距离
layerMask    
A Layer mask that is used to selectively ignore colliders when casting a ray.

当透射射线时一个层掩饰器被用来选择去忽略碰撞体

queryTriggerInteraction    
Specifies whether this query should hit Triggers.

指定该射线是否会命中触发器

Description
Casts a ray through the scene and returns all hits. Note that order is not guaranteed.

透射出一条射线返回场景中所有触碰的物体

See Also: Raycast.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Update()
    {
        RaycastHit[] hits;
        hits = Physics.RaycastAll(transform.position, transform.forward, 100.0F);

        for (int i = 0; i < hits.Length; i++)
        {
            RaycastHit hit = hits[i];
            Renderer rend = hit.transform.GetComponent<Renderer>();

            if (rend)
            {
                // Change the material of all hit colliders
                // to use a transparent shader.
                rend.material.shader = Shader.Find("Transparent/Diffuse");
                Color tempColor = rend.material.color;
                tempColor.a = 0.3F;
                rend.material.color = tempColor;
            }
        }
    }
}

Notes: Raycasts will not detect colliders for which the raycast origin is inside the collider.

public static RaycastHit[] RaycastAll(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layermask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Parameters
origin    The starting point of the ray in world coordinates.
direction    The direction of the ray.
maxDistance    The max distance the rayhit is allowed to be from the start of the ray.
layermask    A Layer mask that is used to selectively ignore colliders when casting a ray.
queryTriggerInteraction    Specifies whether this query should hit Triggers.
范例代码

using UnityEngine;

public class RayDemo : MonoBehaviour {
    // Update is called once per frame
    private RaycastHit[] hits;
    void Update()
    {
        hits = Physics.RaycastAll(transform.position, transform.forward, 100.0F);
        Debug.DrawLine(transform.position, transform.forward*100, Color.red);
        for (int i = 0; i < hits.Length; i++)
        {
            RaycastHit hit = hits[i];
            Debug.Log("碰撞点为:"+ hit.point);
            Vector3 tempPos = hit.transform.position;
            GameObject temObj=new GameObject("point");
            temObj.transform.position = tempPos;
            temObj.AddComponent<MeshRenderer>().material.color = Color.red;
        }

    }
}
————————————————
版权声明:本文为CSDN博主「renwen1579」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/renwen1579/article/details/120645524

猜你喜欢

转载自blog.csdn.net/qq_21743659/article/details/129197254