Unity 之 RaycastHit(存储射线投射操作)

文章目录

  • 总述
  • 具体使用场景

在这里插入图片描述

总述

RaycastHit 类是 Unity 中的一个结构,用于存储射线投射操作的结果。射线投射是一种常用的技术,用于检测场景中的碰撞、获取碰撞点、获取碰撞对象的信息等。RaycastHit 提供了关于射线与场景中对象的交互信息,包括碰撞点、碰撞法线、碰撞对象等。以下是关于 RaycastHit 的详细介绍:

  1. 射线投射: 在 Unity 中,可以使用 Physics.RaycastPhysics.RaycastAll 方法来进行射线投射。这些方法将返回一个 RaycastHit 对象,其中包含有关射线与场景中对象的交互信息。

  2. 属性和方法: RaycastHit 类提供了许多属性和方法,用于获取射线与碰撞对象的相关信息,包括但不限于:

    • point:碰撞点的世界坐标。
    • normal:碰撞点处的法线向量。
    • distance:射线起点到碰撞点的距离。
    • collider:与射线相交的碰撞器。
    • transform:与射线相交的游戏对象的变换。
    • 等等…
  3. 多次投射: 如果使用 Physics.RaycastAll 进行多次射线投射,将返回一个 RaycastHit[] 数组,其中包含所有射线与场景中对象的交互信息。这在需要获取所有碰撞点信息的情况下很有用。

具体使用场景

当使用 RaycastHit 类进行射线投射时,有许多不同的使用场景,包括检测碰撞、拾取物体、瞄准检测、物体高亮等。在以下每个场景示例中,我将向您展示如何使用 RaycastHit,并加入一些粒子效果(“lizi”,即粒子效果在中文中的写法)来增强可视化效果。

  1. 检测碰撞并发射粒子:

在这个场景中,我们将使用射线投射来检测是否与一个可交互的对象发生碰撞,然后在碰撞点发射一些粒子效果。

using UnityEngine;public class RaycastCollisionExample : MonoBehaviour
{public ParticleSystem collisionParticles; // 粒子效果void Update(){Ray ray = new Ray(transform.position, transform.forward);RaycastHit hitInfo;if (Physics.Raycast(ray, out hitInfo)){// 碰撞点发射粒子效果if (collisionParticles != null){collisionParticles.transform.position = hitInfo.point;collisionParticles.Play();}Debug.Log("碰撞对象:" + hitInfo.collider.gameObject.name);}}
}

在这个示例中,我们在碰撞点发射了一个粒子效果,从而在用户与可交互对象发生碰撞时产生视觉效果。

  1. 物体拾取与交互:

在这个场景中,我们将使用射线投射来检测是否与一个可拾取的物体发生碰撞,然后可以将物体拾取并交互。

using UnityEngine;public class ObjectPickupExample : MonoBehaviour
{private Transform pickedObject = null; // 当前拾取的物体void Update(){Ray ray = new Ray(transform.position, transform.forward);RaycastHit hitInfo;if (Physics.Raycast(ray, out hitInfo)){// 拾取物体if (Input.GetKeyDown(KeyCode.E)){if (hitInfo.collider.CompareTag("Pickable")){pickedObject = hitInfo.collider.transform;Debug.Log("拾取了:" + pickedObject.name);}}// 交互if (Input.GetKeyDown(KeyCode.F)){if (pickedObject != null){Debug.Log("与 " + pickedObject.name + " 进行了交互。");}}}}
}

在这个示例中,我们使用 Input.GetKeyDown(KeyCode.E) 来拾取与射线相交的可拾取物体,并使用 Input.GetKeyDown(KeyCode.F) 来与拾取的物体进行交互。

  1. 物体高亮效果:

在这个场景中,我们将使用射线投射来检测是否与一个物体发生碰撞,然后在碰撞对象上显示一个高亮的粒子效果。

using UnityEngine;public class ObjectHighlightExample : MonoBehaviour
{public ParticleSystem highlightParticles; // 高亮粒子效果private Transform lastHighlightedObject = null; // 上一个高亮的物体void Update(){Ray ray = new Ray(transform.position, transform.forward);RaycastHit hitInfo;if (Physics.Raycast(ray, out hitInfo)){// 高亮物体if (hitInfo.collider.CompareTag("Highlightable")){if (lastHighlightedObject != hitInfo.collider.transform){if (lastHighlightedObject != null){highlightParticles.Stop();}lastHighlightedObject = hitInfo.collider.transform;highlightParticles.transform.position = lastHighlightedObject.position;highlightParticles.Play();}}else if (lastHighlightedObject != null){highlightParticles.Stop();lastHighlightedObject = null;}}}
}

在这个示例中,我们使用高亮粒子效果来显示玩家当前所指的物体。粒子效果在物体上播放和停止,从而实现高亮效果。

这些场景示例演示了如何使用 RaycastHit 类来实现不同的功能,从检测碰撞到拾取物体以及物体高亮效果。粒子效果的添加使得交互和操作更加生动和有趣。根据您的需求,您可以在代码中添加其他功能和效果,以创造更丰富的游戏体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

限制 el-input 输入 emoji

1. 电脑如何输入 emoji 表情 ? 快捷键 win; 或 win. 2. 代码实现 <template><el-input v-model"input" placeholder"请输入内容" input"inputChange"></el-input> </template><script> export default {name: D…

R语言实现免疫浸润分析(1)

免疫浸润分析是生物信息学研究中的一项关键内容&#xff0c;它旨在评估肿瘤微环境中不同类型的免疫细胞组成。免疫细胞在肿瘤发展和治疗中起着至关重要的作用&#xff0c;因为它们可以影响肿瘤的生长、扩散和对治疗的响应。 为了了解免疫细胞在肿瘤中的分布和数量&#xff0c;…

LC-路径总和

LC-路径总和 链接&#xff1a;https://leetcode.cn/problems/path-sum/description/ 描述&#xff1a;给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。…

安防监控视频汇聚平台EasyCVR视频平台调用iframe地址无法播放的问题解决方案

安防监控视频汇聚平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可提供视频监控直播、云端录像、视频云存储、视频集中存储、视频存储磁盘阵列、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、AI算法中台智能分析无缝…

【2023年11月第四版教材】《第5章-信息系统工程之软件工程(第二部分)》

《第5章-信息系统工程之软件工程&#xff08;第二部分&#xff09;》 1.3 软件设计1.4 软件实现&#xff3b;补充第三版教材内容&#xff3d; 1.5 部署交付 1.3 软件设计 1、结构化设计SD是一种面向数据流的方法&#xff0c;它以SRS和SA阶段所产生的DFD和数据字 典等文档为基础…

Django视图-HttpRequest请求对象和HttpResponse响应对象

文章目录 HttpRequestHttpResponse实践request对象的属性和方法响应 def index(request): 这个request其实就是内部已经封装好的Http请求HttpRequest&#xff0c;它是一个请求对象Django中的视图主要用来接受Web请求&#xff0c;并做出响应。 视图的本质就是一个Python中的函数…

⛳ TCP 协议详解

目录 ⛳ TCP 协议详解&#x1f3a8; 一、TCP / IP 协议的分层模型&#x1f3d3; 1.1、应用层&#x1f9f8; 1.2、传输层&#x1f52e; 1.3、网络层&#x1f3af; 1.4、链路层 &#x1f3ed; 二、HTTP 报文传输原理&#x1f945; 2.1、HTTP 报文传输&#x1f48e; 2.2、封装和分…

邀请函 | 高质量区块链·元宇宙—标准行系列沙龙(北京站)即将开启

区块链、元宇宙是近年来备受关注的新兴技术&#xff0c;也是推动数字经济发展的重要力量。高质量标准引领高质量发展&#xff0c;加快形成标准引领&#xff0c;充分释放区块链、元宇宙对实体经济牵引赋能效应&#xff0c;推进形成相关产业体系高质量发展新格局刻不容缓。 为进…

Tomcat的部署及优化(多实例和动静分离)

目录 绪论 1、tomact 1.1 核心组件 1.2 什么是 servlet 1.3 什么是 JSP? 1.4 Tomcat 功能组件结构 1.5 Tomcat 请求过程 2、Tomcat 服务部署 2.1 tomcat自身优化&#xff1a; 2.2 内核优化 2.3 jvm 2.3.1 jvm配置 2.3.2 Tomcat配置JVM参数 2.3.3 jvm优化 3、tom…

视频云存储/安防监控/视频汇聚EasyCVR平台新增经纬度选取功能

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

优酷视频码率、爱奇艺视频码率、B站视频码率、抖音视频码率对比

优酷视频码率、爱奇艺视频码率与YouTube视频码率对比 优酷视频码率&#xff1a; 优酷的视频码率可以根据视频质量、分辨率和内容类型而变化。一般而言&#xff0c;优酷提供了不同的码率选项&#xff0c;包括较低的标清&#xff08;SD&#xff09;码率和较高的高清&#xff08;…

Python 驱动连接 OceanBase 数据库

安装 JayDeBeApi 驱动 pip3 install JayDeBeApi 待更新 Python 驱动连接 OceanBase 数据库_云数据库 OceanBase 版-阿里云帮助中心

6.Web后端开发【SpringBoot入门】

文章目录 1 SpringBoot快速入门1.1 Web分析 2. HTTP协议2.1 HTTP-概述2.1.1 介绍2.2.2 特点 2.2 HTTP-请求协议2.3 HTTP-响应协议2.3.1 格式介绍2.3.2 响应状态码 常见的相应状态码 3 WEB服务器3.1 服务器概述 1 SpringBoot快速入门 Spring的官网Spring Boot 可以帮助我们非常…

浅拷贝与深拷贝

作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 浅拷贝与深拷贝 浅拷贝浅拷贝定义浅拷贝代码演示浅…

2023国赛数学建模D题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码&#xff0c;大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

HCIP-OpenStack组件介绍

openstack把这些组件服务都集成到httpd服务中了&#xff0c;目的是为了提升性能。登入不了openstack在控制节点查下httpd服务&#xff0c;systemctl status httpd Horizon&#xff1a;提供webUI图形化界面的 Keystone&#xff1a;提供身份认证服务、授权、endpoint端点&#xf…

【Mybatis源码分析】解析语句标签_Select|Update|Insert|Delete

解析语句标签 Select|Update|Insert|Delete 一、前言二、语句标签的源码分析三、sql 标签的解析四、总结 一、前言 在阐述解析语句标签之前&#xff0c;得先知道我们的语句标签内容最后被封装到Configuration哪&#xff1f;&#xff08;都应该知道 Mybatis 通过的是 XMLConfig…

排序(七种排序)

1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 1.插入排序 1.1思路 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止&#xff0c;得到一个新的有序序列 1.2实现 //插入排…

全志orangepi-zero2驱动编写

文章目录 编译内核拓展一下&#xff0c;如果是其他板子内核编译有几种方式&#xff08;可以不用看&#xff09;&#xff1a;以下是树莓派板子的内核编译 驱动编写框架驱动框架 结束 编译内核 编写驱动之前先去官网下载&#xff0c;手册&#xff0c;跳到5.几章先弄好内核编译 照…

openGauss学习笔记-45 openGauss 高级数据管理-物化视图

文章目录 openGauss学习笔记-45 openGauss 高级数据管理-物化视图45.1 全量物化视图45.1.1 全量物化视图语法格式45.1.2 全量物化视图参数说明45.1.3 全量物化视图示例 45.2 增量物化视图45.2.1 增量物化视图语法格式45.2.2 增量物化视图参数说明45.2.3 增量物化视图示例 openG…