【唐老狮】Unity——物理系统(射线检测)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

学习目标】

  • 射线检测
  1. 能够通过射线检测进行碰撞判断
  2. 能够通过玩家点击屏幕检测选中的物体

【射线检测】

  • 作用
    可以利用3D世界中的射线,和3D世界中的物体进行碰撞(相交)判断,利用它可以实现射击

  • 必要条件
    碰撞体
    射线

【3D世界中射线】

由线段的一端无限延长所形成的直的线,由起点和方向两个关键属性构成

代码中创建射线对象

代码中创建射线对象

注意:这里画的是线段,用来看射线的方向的,真的射线是从起点向方向无限延伸的


【屏幕发出的射线】

根据玩家在屏幕上点击的位置,发射一条射线


代码中创建屏幕射线


代码中创建屏幕射线

Unity --- 射线检测 然后这个方法的参数中的第一个是我们发出的射线,第二个是射线发出的长度(此时其实就是线段,然后这个参数可写也可不写,不写的时候就是射线),第三个参数是规定能够进行射线碰撞检测的图层(上图中规定的是第10层,然后这个参数可写可不写,不写的话默认检测所有图层)这个射线检测中的射线是从摄像机中的小平面发出的(前面有说我们看到的游戏画面就是这个小平面上的画面,当我们在游戏画面上点击的时候,其实就相当于在小平面上点击)那么最关键的技术问题就是:当我们在游戏画面中点击某个位置的时候,我们如何找到游戏场景中的对应点呢? 阅读详情

相关推荐

唐老狮Unity——物理系统(范围检测

【学习目标】 能够使用范围检测函数在游戏中进行范围检测 【范围检测】 作用 在3D世界中检测在某一个范围内存在的物体 在游戏中,经常会存在这样的技能,比如陨石术,定点爆破等等,他们都是释放的一瞬间,判断某一个范围内是否有怪物或者玩家,然后让其受到伤害,检测一次后就结束。 如果我们用之前的碰撞检测,和射线检测都不太适合做这样的功能。因为碰撞检测主要是用来长时间存在的物体间进行判断的,比如检测子弹和其它物体是否有碰撞;而射线检测是线性的检测,并不是范围的。 所以这种瞬间的,范围的判断就必须要学

MrTang_Unity的博客 2770

Unity 相机/物体发射射线--简单小记

/打印射线,该射线仅Scene窗口可见(如果需要打印射线必须设置射线长度,颜色,显示时间为可选项)相机发射射线:Ray ray =Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(transform.position,V3,out hit,"射线检测的距离"))如果需要打印射线必须设置射线长度,不打印射线则不需要填写射线距离。功能:鼠标点击屏幕发射射线打印射线打到的物体的名字。(2)从物体发射射线

qq_36361484的博客 1555

Unity 通过鼠标点击与射线检测实现与物体交互

Unity 通过鼠标点击与射线检测实现与物体交互

不在同一频道上的呆子的博客 3320

【超级入门】Unity如何实现画射线+射线检测+NavMeshAgent结合

射线检测是特别常见的应用,这里有非常简单的画射线射线检测,以及结合导航寻路组件的使用,从基础入手,快来看看吧。

记录unity基础 5077

Unity3d技术之关于射线的制作详解

一说到unity3d射线的制作,其实很多人会觉得头疼。主要的原因就是因为unity3d射线的制作过程会繁琐,操作流程也很麻烦。但是其实关于unity3d射线的制作,我们只要是能掌握好unity3d射线的制作要领,要完成unity3d射线的制作自然就会轻松很多了。不信,您看看以下的内容就知道了。    using System;  using System.Collections.Generi

QST_Apple的专栏 1359

Unity射线(Ray)

射线顾名思义是一个点向一个方向发射的一条无终点的线,在发射过程中可以与其他物体碰撞。Raycast与RayCastAll的的重载函数有很多这里各写一种(简单使用)Raycast只检测射线第一个碰到的物体(检测的前提是游戏物体上带有碰撞体)这个类是用来存储射线所碰到的物体的对象的信息的。RaycastAll检测射线上碰到的所有物体。

m0_64163189的博客 790

Unity--物理系统射线检测

射线检测:碰撞判断、检测玩家点击的物体判断射线与物体是否碰撞:碰撞体、射线

dcprime的博客 757

Unity知识点入门、基础、核心、进阶

快速回顾Unity相关组件

weixin_46012816的博客 2909

XR 开发优先学习路线

现在的 XR 开发(如使用 XR Interaction Toolkit)基本都是把 UGUI 放在“World Space”模式下。:XR 游戏(尤其是 Quest 等一体机)对性能敏感,且 Lua 在 XR 领域的应用不如手游广泛,初期没必要学。:XR 对帧率要求极高(VR 通常要稳定 72/90/120 FPS),必须学习 URP 及其下的。:现代 XR 开发不再使用旧的输入方式,全部基于 Unity 新的。:XR 里的交互(如抓取、射线检测)全靠脚本控制。:XR 是纯 3D 的世界。

明阳 84

Unity开发】随手记:点击屏幕选中物体

3D拾取,Unity开发,点击屏幕选中物体

Can__er的博客 4274

Unity射线检测鼠标点击物体

Unity射线检测鼠标点击物体

w091253的博客 826

Unity 3D中的射线与碰撞检测

关注IP属地: 福建0.4362016.05.03 21:59:36字数 2,265阅读 41,742本文来源于两年前我的一篇。CSDN博客本来就没写多少,现在也基本是到简书上混了。所以各位大大请自觉绕过哈。在我们的游戏开发过程中,有一个很重要的工作就是进行碰撞检测。例如在射击游戏中子弹是否击中敌人,在RPG游戏中是否捡到装备等等。在进行碰撞检测时,我们最常用的工具就是射线Unity 3D的物理引擎也为我们提供了射线类以及相关的函数接口。本文将对射线的使用进行一个总结。

m0_37565668的博客 1619

第二十八章 Unity射线检测

unity射线检测,Physics.Raycast方法使用,Physics.RaycastAll方法使用,Camera.main.ScreenPointToRay方法使用

konkon2012的博客 5053

unity射线检测——小白笔记#6

unity射线是一个从初始点开始,向一个方向无限延伸的一条直线,通过这条射线可以检测所触碰到的物体,然后就可以获取到物体的相关组件,并进行进一步的操作。例如,一些射击游戏通过武器发出一条射线进行消灭敌人,或者通过射线获取位置坐标并进行移动。总之,线检测unity中的用途还是很广泛的。

qq_65158315的博客 1448

Unity射线以及相关点击触发事件的归纳

例如:最近在做一些Unity的小游戏需要,需要用到射线检测和点击事件等操作,虽然都是一些很基础的东西但是也折腾了一会,主要有些细节没处理好就会导致不触发,写篇博客学习记录一下吧。对于不同的情况我们可以选择自己需要的以及最方便、高效的检测方法,以上为个人学习记录,如有不对的地方希望大家指正讨论,一起学习进步。

Wu_0526的博客 2823

Unity | 射线检测及EventSystem总结

Unity中,Input.mousePosition 返回的是一个Vector3,它代表了鼠标在屏幕上的位置。这个位置的x和y分量代表了鼠标在屏幕上的水平和垂直坐标,而z分量默认情况下总是0,因为鼠标的位置是二维的,它没有深度信息。在Unity中,StandaloneInputModule、Physics Raycaster、Physics 2D Raycaster、GraphicRaycaster和EventTrigger都是事件系统的一部分,它们各自负责不同的任务。

该用户还没想到好的昵称的博客 3265

Unity3D基础知识点】——射线

射线(ray)是指由线段的一端无线延长所形成的直线。射线多用于检测Unity 中描述一个射线一个点加个方向,在与其他物体发生碰撞时将停止发射。 Ray 射线类。 创建一个射线: using UnityEngine; using System.Collections;namespace GaoSan{ public class RayTest : MonoBehaviour

个人博客 http://www.hjzdream.com/ 3213

Unity】详解Unity中的射线射线检测

碰撞检测可以帮助我们实现诸如抵达某个地点自动触发剧情、判断子弹是否击中玩家等功能,但我如果想要实现如当鼠标悬浮某个人物上,自动弹出该人物信息,要如何判断呢?这时使用碰撞检测,从摄像机生成一个透明碰撞体朝着人物移动,等碰撞到了人物再弹出该人物信息?会不会太繁琐了。或许你又会想,若我直接生成一个足够长的透明碰撞体呢,是不是在创建的那一刻就可以触发该人物的弹出信息逻辑?没错这样的确可以,而这就是射线!不过是把无限长的透明碰撞体变为了无限长的一条线,仅此而已。

希望有志同道合的的朋友可以互相学习! 8813

unity中使用Ray射线完成物体选择

前言 Unity中使用Ray射线可以直接通过点击屏幕来时实现控制3D场景中的物体,来跟我一起来学习吧! 一、发射射线 Ray ray = cam.ScreenPointToRay(Input.mousePosition); //cam为相机 RaycastHit hit; 二、射线碰撞检测 if (Physics.Raycast(ray, out hit, maxDistance))//碰撞检测 { Debug.DrawLine(cam.positon,hit.point);//画线显示 Debug.

xinzhilinger的博客 1640
上一篇: 【唐老狮】Unity和UE4两大游戏引擎,你该如何选择?
下一篇: 【唐老狮】Unity——物理系统(范围检测)
一唐老狮一
博客等级 码龄5年 505粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值