Unity3d 射线检测
射线碰撞单个物体:
方式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 射线检测相关推荐
- Unity3D射线检测墙面前停止移动
功能: 计算角色/怪物走到目标,如果有墙就再墙前停止,防止一直怼墙走现象. 思路: 1. θ角 = 入射线(self - target) 与 法线(raycastHit.normal) 的夹角度(V3 ...
- 射线检测算法在游戏中应用
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
- Unity3D 鼠标检测世界中的游戏对象
今天向大家介绍一下,如何初步的用Unity3D从摄像机到鼠标的射线,也就是鼠标检测到Unity3D世界中的游戏对象! 如何才能使射线检测到游戏对象呢,只有一个条件,那就是必须添加collider组件, ...
- 直播笔记 | Unity中射线检测详解
本文首发于洪流学堂微信公众号. 洪流学堂,学Unity快人几步 你好,我是郑洪智,你的技术探路者. 这周三我们直播剖析了Unity中射线检测的功能,以下是直播内容精华部分笔记. 完整录播:https: ...
- UE<C++>三步在C++中制作射击类游戏(射线检测、接口调用)
废话不多说 一.创建一个接口 UINTERFACE(MinimalAPI) class UHurtInterface : public UInterface {GENERATED_BODY() };/ ...
- 吃鸡空投掉落射线检测,粒子系统产生红色信号烟
1.首先将飞机和空投模型导入Unity,添加进场景视图. 2.给飞机添加飞行动画,(由于飞机只飞行一次 将Culling Mode勾选成Cull Completely) 3.给飞机和空投添加碰撞框,并 ...
- unity-2D游戏地面检测 三射线检测
2D游戏中跳跃是不可或缺的功能,要实现跳跃功能,就必须进行地面检测!常规方法是使用一根往角色下方延伸的射线检测,但是这种方法在一些复杂不规则的地面效果通常不尽人意.通过增加射线数量,即可完善这种方法的 ...
- Unity学习之Physic.Raycast(射线检测)个人理解分享
Physics.Raycast参数 public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitIn ...
- 八叉树的范围和射线检测
接typescript八叉树的简单实现 说一下typescript八叉树的范围和射线检测实现. 学习八叉树,并用自己的方式实现一下,理论联系实际 范围检测 应用场景 在3d项目中,针对场景节点较多的情 ...
最新文章
- arduino红外热释电传感器_压力传感器在汽车空调系统中的应用
- 机器学习基础-最近邻规则分类 KNN (K-Nearest Neighbor)-11
- 我认为最节省时间的CSS命名规范
- 自定义头文件 No such file or directory
- mysql select语句执行顺序
- N - C语言实验——各位数字之和排序
- 【报告分享】2021年中国新一代信息技术创投生态研究报告.pdf(附下载链接)...
- svg的transform-matrix详解
- mysql 判断当前星期_MySQL数据库如何获取一个日期所对应的星期数呢?
- 为什么世界上没有安全的工作
- 浅复制和深复制的区别?//浅拷贝和深拷贝
- Sql Server 中 根据具体的值 查找该值所在的表和字段
- android开发下载文件损坏解决方法,Android中已下载的.apk文件已损坏
- VoLTE业务端到端流程:无线侧信令流程
- GCD中的dispatch_barrier_async函数的使用(栅栏函数)
- 被迫解除劳动关系通知书
- AAC Advanced Audio Coding(高级音频编码)资料整理
- 2017达内前端开发工程师视频教程
- 搬砖:void (*signal(int sinno,void(*func)(int)))(int) 函数指针
- Blockly编程教程-Google Blockly入门与介绍