Unity之射线检测

不知道大家有没有玩过红色警戒 —— 一款即时战略游戏,和罪恶都市一样小编小学的时候就开始玩了,这款游戏控制单位角色移动是通过鼠标的点击来实现。

同样的操作方法还有英雄联盟等很多游戏,那本篇文章小编就通过简单小实例来讲解这种操作在Unity中是如何实现的。

小编先展示一下实例的演示动图:红色球体表示我们控制的角色,鼠标左键点击小球就会到相应的坐标位置并打印坐标。

一、原理

先来讲一下这种操作方式的原理:它其实是从摄像机发射出的一条射线。当鼠标点击的时候,射线就从摄像机发射打到你点击的位置,通过检测射线获取到位置坐标,角色就向这个坐标移动。

 注:射线发射后碰到的游戏物体必须要有碰撞组件才会被检测到,演示动图中点击平面区域以外的地方是没有任何反应的。

二、实现实例 

创建射线的两种方法:该实例是通过摄像机创建射线

//创建射线的两种方法:
//方式一 通过向量创建
Ray ray1 = new Ray(Vector3.zero , Vector3.up);
//方式二 通过摄像机创建
Ray ray2 = Camera.main.ScreenPointToRay(Input.mousePosition);

新建一个平面一个球体,球体挂载上红色的材质方便我们观察,新建RayTest脚本用来检测射线并挂载到球体上。

public class RayTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//当点击鼠标左键时执行if(Input.GetMouseButtonDown(0)){//按下鼠标左键发射射线  射线发射后碰到的游戏物体必须要有碰撞组件才会被检测到Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//声明一个碰撞信息类RaycastHit hit;//碰撞检测用布尔类型表示bool res = Physics.Raycast(ray,out hit);//如果碰撞到的情况下,hit就有内容了if (res == true){//打印出碰撞信息的坐标Debug.Log(hit.point);//把坐标赋值给球体,球体位置就会直接闪现到射线检测点transform.position = hit.point;}//多检测//RaycastHit[] hits = Physics.RaycastAll(ray, 100, 1 << 10);}}
}

点击运行就是动图的演示效果了,很简单的一个实例,拜拜┏(^0^)┛

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

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

相关文章

2024最新Java高频面试题总结(附答案PDF)春招面试必备!

《Java面试全解析》1000道 面试题大全详解 本人是 2009 年参加编程工作的&#xff0c;一路上在技术公司摸爬滚打&#xff0c;前几年一直在上海&#xff0c;待过的公司有 360 和游久游戏&#xff0c;因为自己家庭的原因&#xff0c;放弃了阿里钉钉团队的 offer 回到了西安。 从…

openfire源码篇(一)检出源码并运行

openfire源码篇&#xff08;一&#xff09;检出源码并运行 源码检出 官方github地址 https://github.com/igniterealtime/Openfire 检出源码到本地&#xff08;请注意你的java版本&#xff0c;我检出的openfire 为 4.9.0-SNAPSHOT 此时jdk版本应为11&#xff09; 将源码检出…

通过OpenIddict设计一个授权服务器02-创建asp.net项目

在这一部分中&#xff0c;我们将创建一个ASPNET核心项目&#xff0c;作为我们授权服务器的最低设置。我们将使用MVC来提供页面&#xff0c;并将身份验证添加到项目中&#xff0c;包括一个基本的登录表单。 创建一个空的asp.net core项目 正如前一篇文章中所说&#xff0c;授权…

苹果Find My可查找添加32件物品,伦茨科技ST17H6x芯片加速产品赋能

苹果最近更新的支持文档证实&#xff0c;从 iOS 16 开始&#xff0c;"Find My"可查找添加物品从16件增加到32件&#xff0c;AirTag 和“查找”网络中的物品利用“查找”网络的强大功能来发挥作用&#xff0c;这个网络由数亿台加密的匿名 Apple 设备构成。“查找”网络…

数据结构之栈的基本操作

该顺序栈涉及到了存储整型数据的顺序栈还有存储字符型数据的顺序栈 实现的功能有&#xff1a;入栈、出栈、判断是否为空栈、求栈的长度、清空栈、销毁栈、得到栈顶元素 此外根据上述功能&#xff0c;编写了数值转换&#xff08;十进制转化八进制&#xff09;方法、括号匹配方法…

Spring Boot - 利用Resilience4j-Circuitbreaker实现断路器模式_防止级联故障

文章目录 PreResilience4j概述Resilience4j官方地址Resilience4j-Circuitbreaker应用场景微服务演示Address servicePOMModelRepositoryServiceControllerData InitProperties测试 Order serviceModelRepositoryServiceSet UpProperties测试 探究断路器调用order-service API 2…

卷积和滤波对图像操作的区别

目录 问题引入 解释 卷积 滤波 问题引入 卷积和滤波是很相似的&#xff0c;都是利用了卷积核进行操作 那么他们之间有什么区别呢&#xff1f; 卷积&#xff1a;会影响原图大小 滤波&#xff1a;不会影响原图大小 解释 卷积 我们用这样一段代码来看 import torch.nn as …

【AI接口】语音版、文心一言大模型和AI绘图、图片检测API

文章目录 一、语音版大模型AI1、接口2、请求参数3、请求参数示例4、接口返回示例 二、AI图片鉴黄合规检测API1、接口2、请求参数3、请求参数示例4、接口返回示例5、报错说明6、代码开源 三、人工智能AI绘画API1、接口2、请求参数3、请求参数示例4、接口返回示例5、AI绘画成果展…

Gin 框架之用户密码加密

文章目录 一、引入二、密码加密位置三、如何加密四、bcrypt 库加密4.1 介绍4.2 优点&#xff1a;4.3 使用 五、小黄书密码加密实践 一、引入 Gin是一个用Go语言编写的Web框架&#xff0c;而用户密码的加密通常是在应用程序中处理用户身份验证时的一个重要问题。 通常敏感信息…

3D可视化:陶瓷烧制的未来之路

陶瓷&#xff0c;这一古老的艺术形式&#xff0c;见证了中华文明的辉煌。然而&#xff0c;随着时代的变迁&#xff0c;传统的陶瓷烧制过程正面临着诸多挑战。如何将这门千年技艺传承下去&#xff0c;并在现代社会中焕发新的光彩&#xff1f;3D可视化技术为我们打开了一扇通往未…

基于springboot+vue的蜗牛兼职网的设计与实现系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

第02章_变量与运算符(关键字,标识符,变量,基本数据类型,进制,运算符,字符集)

文章目录 第02章_变量与运算符本章专题与脉络1. 关键字&#xff08;keyword&#xff09;2. 标识符( identifier)3. 变量3.1 为什么需要变量3.2 初识变量3.3 Java中变量的数据类型3.4 变量的使用3.4.1 步骤1&#xff1a;变量的声明3.4.2 步骤2&#xff1a;变量的赋值 4. 基本数据…

Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

作者&#xff1a;来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic Stack 8.12 构建于 Apache Lucene 9.9&#xff08;有史以来最快的 Lucene 版本&#xff09;之上&#xff0c;基于我们对标量量化和搜索并发性的贡献&#xff0c;为文本、向量和…

仿“今日头条”的开源多媒体资讯发布系统

伴随着互联网的普及、用户的时间碎片化&#xff0c;使得信息传播方式发生了巨大变化&#xff0c;因此我们看到微信、微博、今日头条、抖音、快手等平台迅速崛起。这些新的信息传播方式给广大用户带来了极大的便利&#xff0c;同时也给每个人的思想和生活带来了潜移默化的影响。…

代码随想录 Leetcode459. 重复的子字符串(KMP算法)

题目&#xff1a; 代码&#xff08;首刷看解析 KMP算法 2024年1月18日&#xff09;&#xff1a; class Solution { public:void getNext(string& s,vector<int>& next) {int j 0;next[0] j;for (int i 1; i < s.size(); i) {while (j > 0 && s…

三大3D引擎对比,直观感受AMRT3D渲染能力

作为当前热门的内容呈现形式&#xff0c;3D已经成为了广大开发者、设计师工作里不可或缺的一部分。 用户对于3D的热衷&#xff0c;源于其带来的【沉浸式体验】和【超仿真视觉效果】。借此我们从用户重点关注的四个3D视觉呈现内容&#xff1a; 材质- 呈现多元化内容水效果- 展…

【Git】常用的Git操作集合

常用的Git操作集合 1. 分支操作1.1 查看本地所有分支git branch 1.2 查看所有分支&#xff08;包含本地远程仓库&#xff09;git branch -a 1.3 切换分支git checkout test 2. 常用基本操作2.1 查看 git 各存储区内(文件)状态git status 2.2 查看工作区与暂存区文件差异git dif…

揭开UI设计的神秘面纱:如何打造一款让用户爱不释手的移动APP

文章目录 一、目标用户分析二、设计风格和色彩搭配三、布局和导航设计四、交互设计五、视觉元素设计六、响应式设计七、测试和优化八、持续更新和迭代九、团队协作和沟通十、学习和成长《移动APP UI设计与制作(微课版)》编辑推荐内容简介目录 《Flutter入门经典&#xff08;移动…

【vue】ant-col多列栅格式的表单排列方式布局异常:

文章目录 一、效果&#xff1a;二、解决&#xff1a;三、问题&#xff1a; 一、效果&#xff1a; 二、解决&#xff1a; 在row中添加布局类型&#xff1a;type“flex” 三、问题&#xff1a; 后期正式环境还是存在该问题 >>>.ant-form-item {max-height: 32px; }多…

搭建web网站

要求 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于[www.openlab.com/student](http://www.openlab.com/student) 网站访问学生信…