Unity射线

 //射线原点

 [SerializField] Transform tr;

//射线长度
    [SerializField] float dis = 5;

//射线停留时间

[SerializField] float t=0.1f
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        //显示射线
        Ray ray = new Ray(tr.position,tr.forward) ;
        RaycastHit hit;
        Debug.DrawRay(tr.position, tr.forward * dis, Color.black, t);
        if (Physics.Raycast(ray,out hit,100)) {

//检测特定名称对象
            if (hit.collider.name== "Cube (1)") {
                print("被射到了");
            }
            
        }
    }

原文地址:https://www.cnblogs.com/Prode/p/9941124.html

时间: 2024-10-17 21:35:32

Unity射线的相关文章

unity 射线检测

unity中射线检测时非常实用也经常实用的一种手段.下面讲解一下射线检测问题. 1)Ray 根据射线端点和射线的方向定义一条射线 Ray ray= new Ray(transform.position, transform.forward); 定义一个包含射线投射信息的变量RaycastHit hit,并进行射线检测Physics.SphereCast RaycastHit hit; if(Physics.SphereCast(ray,1f,out hit)) { if(hit.distance

Unity 射线

射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 .用途:在unity中射线应用范围比较广, 多用于碰撞检测(如:子弹飞行是否击中目标).角色移动 等. 相关API: 1.Ray Camera.main.ScreenPointToRay(Vector3 pos)   返回一条射线Ray从摄像机到屏幕指定一个点 2.Ray Camera.main.ViewportPointToRay(Vector3 pos)  返回一条射线Ray从摄像机到

Unity常见面试题大全

1.       [C#语言基础]请简述拆箱和装箱. 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程. 1.在堆中开辟内存空间. 2.将值类型的数据复制到堆中. 3.返回堆中新分配对象的地址. 拆箱操作: object类型显示转换为值类型或从接口类型到实现该接口值类型的过程. 1.判断给定类型是否是装箱时的类型. 2.返回已装箱实例中属于原值类型字段的地址. 2.        [.NET(C#)] attribute,property,markup,ta

unity中射线碰撞检测总结

这阵子通过看视频,看书对unity中射线碰撞检测,有了一些了解,这里我把它总结一下写下来,希望能帮助到你们,也希望通过各位大神来指正不足之处: 射线碰撞检测,就是由某一物体发射出一道射线,射线碰撞到物体之后,可以得到该物体的相关信息,然后就可以对该物体进行一些操作的过程了.PS:个人见解: 射线的发射分为可见和不可见,可见的情况就是在游戏当中你可以看到射线,而不可见就是游戏运行时,你只可以在Scene试图下观察到它,而这到射线又是存在的: 而其实两者区别不大,关键是看你怎么用它了: 下面先看看不

[Unity菜鸟] 射线

1. 射线用 Physics.Raycast 都可以判断,用 collider.Raycast 只在某些(不明)情况下可以 void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; // if (collider.Raycast(ray, out hit, 100f)) if (Physics.Raycast(ray,out hit ,100f)) { Debug.Dr

Unity Physics.Raycast 射线投射

bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask) 当光线投射与任何碰撞器交叉时为真,否则为假. bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float distance, int layerMask) 在场景中投下可与所有碰撞器碰撞的一条光线,并返回碰撞的细节信息(). bool

Unity屏幕射线碰撞

Layers层: 从Layers设置看来,最多支持32层.  图层的值开始依次 0^2,1^2, 2^2, 3^3 依次增加. 当摄像机Culling Mask属性 Nothing= –1 Evening = 全部图层之和, 项目开始默认设置了7个图层. 值就是0^2,1^2, 2^2, 3^3 .. 6^2  = 279 如果我们选择Defulat图层,所在第0位置值 0^2 = 1 如果我们选择Defualt,Transparent,图层位置0,1 = 0^2+1^2 = 3 组合: 假设在

unity如何创建射线

void Update () { CheckBarrier(); } void CheckBarrier() { //创建一个射线 关键字Ray //第一个参数放的是发射射线的物体的位置,第二个参数放的是发射射线的方向 Ray ray1 = new Ray(transform.position,transform.forward); //发射射线 RaycastHit HitInfo; //射线默认长度为无穷大,想要设置射线长度加一个参数即可,例如设置射线长度为五(ray,out HitInfo

【Unity笔记】经典的鼠标点击射线检测碰撞

void Update (){ if(Input.GetMouseButton(0)){ //从摄像机发出到点击坐标的射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if(Physics.Raycast(ray,out hitInfo)){ //划出射线,只有在scene视图中才能看到 Debug.DrawLine(ray.origin,hitInfo.point); Game