射线碰撞单个物体:

方式1:从摄像机向世界发射一条射线,通常用于检测鼠标指针有没有选择物体

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

方式2:创建从一个点到一个方向的射线

Ray ray = new Ray(Vector3.zero,Vector3.up);

声明一个射线碰撞信息类

RaycastHit hit;

//进行碰撞检测并返回结果,检测信息会写入碰撞信息类

bool res = Physics.Raycast(ray,out hit);

射线碰撞多个物体:

//从摄像机向游戏世界发射一条射线,常用于检测鼠标是否选中物体
Ray ray = Camera.main.ScreenPositionToRay(Input.mousePosition);
//声明一个碰撞信息数组
Raycast[] hits;
//射线检测,并返回所有碰撞信息
hits = Phsics.RaycastAll(ray);
hits = Phsics.RaycastAll(Vector3.zero,Vector3.up);
//添加射线检测的距离设置
hits = Phsics.RaycastAll(ray,100);
hits = Phsics.RaycastAll(Vector3.zero,Vector3.up,100);
//只与第10(某)个图层上的物体相撞
hits = Physics.RaycastAll(ray,1000,1<<10);
hits = Physics.RaycastAll(Vector3.zero,Vector3.up,1000,1<<10);

例:可以用射线检测人物与地面的距离

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Raycasting : MonoBehaviour
{public float height;RaycastHit hit;void Update(){Ray ray = new Ray(transform.position, -Vector3.up);Debug.DrawRay(transform.position,Vector3.down * height,Color.red);if (Physics.Raycast(ray, out hit)){if (hit.collider.CompareTag("Ground")){// Debug.Log(hit.distance);Debug.Log(hit.distance - 0.5f);}}}
}

Unity3d 射线检测相关推荐

  1. Unity3D射线检测墙面前停止移动

    功能: 计算角色/怪物走到目标,如果有墙就再墙前停止,防止一直怼墙走现象. 思路: 1. θ角 = 入射线(self - target) 与 法线(raycastHit.normal) 的夹角度(V3 ...

  2. 射线检测算法在游戏中应用

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  3. Unity3D 鼠标检测世界中的游戏对象

    今天向大家介绍一下,如何初步的用Unity3D从摄像机到鼠标的射线,也就是鼠标检测到Unity3D世界中的游戏对象! 如何才能使射线检测到游戏对象呢,只有一个条件,那就是必须添加collider组件, ...

  4. 直播笔记 | Unity中射线检测详解

    本文首发于洪流学堂微信公众号. 洪流学堂,学Unity快人几步 你好,我是郑洪智,你的技术探路者. 这周三我们直播剖析了Unity中射线检测的功能,以下是直播内容精华部分笔记. 完整录播:https: ...

  5. UE<C++>三步在C++中制作射击类游戏(射线检测、接口调用)

    废话不多说 一.创建一个接口 UINTERFACE(MinimalAPI) class UHurtInterface : public UInterface {GENERATED_BODY() };/ ...

  6. 吃鸡空投掉落射线检测,粒子系统产生红色信号烟

    1.首先将飞机和空投模型导入Unity,添加进场景视图. 2.给飞机添加飞行动画,(由于飞机只飞行一次 将Culling Mode勾选成Cull Completely) 3.给飞机和空投添加碰撞框,并 ...

  7. unity-2D游戏地面检测 三射线检测

    2D游戏中跳跃是不可或缺的功能,要实现跳跃功能,就必须进行地面检测!常规方法是使用一根往角色下方延伸的射线检测,但是这种方法在一些复杂不规则的地面效果通常不尽人意.通过增加射线数量,即可完善这种方法的 ...

  8. Unity学习之Physic.Raycast(射线检测)个人理解分享

    Physics.Raycast参数 public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitIn ...

  9. 八叉树的范围和射线检测

    接typescript八叉树的简单实现 说一下typescript八叉树的范围和射线检测实现. 学习八叉树,并用自己的方式实现一下,理论联系实际 范围检测 应用场景 在3d项目中,针对场景节点较多的情 ...

最新文章

  1. arduino红外热释电传感器_压力传感器在汽车空调系统中的应用
  2. 机器学习基础-最近邻规则分类 KNN (K-Nearest Neighbor)-11
  3. 我认为最节省时间的CSS命名规范
  4. 自定义头文件 No such file or directory
  5. mysql select语句执行顺序
  6. N - C语言实验——各位数字之和排序
  7. 【报告分享】2021年中国新一代信息技术创投生态研究报告.pdf(附下载链接)...
  8. svg的transform-matrix详解
  9. mysql 判断当前星期_MySQL数据库如何获取一个日期所对应的星期数呢?
  10. 为什么世界上没有安全的工作
  11. 浅复制和深复制的区别?//浅拷贝和深拷贝
  12. Sql Server 中 根据具体的值 查找该值所在的表和字段
  13. android开发下载文件损坏解决方法,Android中已下载的.apk文件已损坏
  14. VoLTE业务端到端流程:无线侧信令流程
  15. GCD中的dispatch_barrier_async函数的使用(栅栏函数)
  16. 被迫解除劳动关系通知书
  17. AAC Advanced Audio Coding(高级音频编码)资料整理
  18. 2017达内前端开发工程师视频教程
  19. 搬砖:void (*signal(int sinno,void(*func)(int)))(int) 函数指针
  20. Blockly编程教程-Google Blockly入门与介绍

热门文章

  1. CountDownTimer倒计时器的使用
  2. VC 检测U盘 C++
  3. HTML、HTM、MHT 图标修复方法
  4. 脱壳入门初级教学(第四课 常见压缩壳与加密壳)
  5. [线性代数]遗留问题
  6. MSVCP100.dll 丢失的问题
  7. 给PDF添加书签目录
  8. 考研分享:炎炎夏日中清凉复习的三大妙招
  9. BERT的vocabulary字典
  10. 您想允许来自未知发布者的以下程序对此计算机进行更改码?