射线碰撞检测可以用来检测方向和距离: 通过Physics.RayCast光线投射来实现:常用于射击利用发射的射线来判断、还有对战中刀剑交战中。。

一、要涉及到RayCast和RayCastHit

1.1、光线投射:Physics.RayCast()

  static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool

返回值也是bool

  • origin:在世界坐标,射线的起始点。
  • direction:射线的方向
  • distance:射线的长度
  • layerMask:只选定Layermask层内的碰撞器,其它层内碰撞器忽略。

1.2、RayCastHit() 光线投射检测

  用来获取从raycast函数中得到的信息反馈的结构。

二、案例

using UnityEngine;
using System.Collections; public class rayCast : MonoBehaviour { private RaycastHit rayHit;//光线投射碰撞:用来获取从raycast函数中得到的信息反馈的结构。 // Use this for initialization
void Start () { } // Update is called once per frame
void Update () {
if (Physics.Raycast(transform.position, transform.forward,out rayHit, ))
{
Debug.Log("碰撞检测到第一人称碰撞到了"+rayHit.collider.name);
}
}
}

RayCastHit参数:

    • The impact point in world space where the ray hit the collider.
      在世界空间中,射线碰到碰撞器的碰撞点。
    • The normal of the surface the ray hit.
      射线所碰到的表面的法线。
    • The barycentric coordinate of the triangle we
      hit.
      所碰到的三角形的重心坐标。
    • The distance from the ray's origin to the impact
      point.
      从光线的原点到碰撞点的距离。
    • The index of the triangle that was hit.
      碰到的三角形的索引。
    • The uv texture coordinate at the impact
      point.
      在碰撞点的UV纹理坐标。
    • The secondary uv texture coordinate at the impact
      point.
      碰撞点的第二个UV纹理坐标。
    • The uv lightmap coordinate at the impact
      point.
      所在碰撞点的光照图UV坐标。
    • The Collider that was hit.
      碰到的碰撞器。
    • The Rigidbody of the collider that was hit. If the collider
      is not attached to a rigidbody then it is
      null.
      碰到的碰撞器的Rigidbody。如果该碰撞器没有附加刚体那么它为null。
    • The Transform of the rigidbody or collider that was
      hit.
      碰到的刚体或碰撞器的变换。

Unity3D笔记 英保通十 射线碰撞器检测的更多相关文章

  1. Unity3D笔记 英保通八 关节、 布料、粒子系统

    一.关节1.1..链条关节 Hinge joint :他可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力 1.2.. ...

  2. Unity3D笔记 英保通七 物理引擎

    给球体添加刚体RigidBody和球体碰撞器Sphere Collider 效果: OnTriggerEnter() 代码 using UnityEngine; using System.Collec ...

  3. Unity3D笔记 英保通六 角色控制器

    一.角色控制器 U3D有两种角色控制方式:Rigidbody刚体.角色控制器组件(胶囊体组件) 面试的题目中经常会遇到这个问题: CharacterController和Rigidbody的区别? 这 ...

  4. Unity3D笔记 英保通一

    一.材质和着色器 1.材质和着色器紧密的联系,其中材质相当于是一个框架,而着色器就是框架中中的内容.在材质框架中可以选择不同的Shader并调节不同的 属性 Material和Physic Mater ...

  5. Unity3D笔记 英保通九 创建数

    Unity中创建树:可以直接通过程序自动来创建树木还可以手动创建树木(本质上在我看来就是给程序自动创建的树动动”小手术“) 一.程序自动创建树木 3.1.层次视图中创建:一个平行光.摄像机.地.数并且 ...

  6. Unity3D笔记 英保通五 鼠标事件与GUI系统双击检测

    一.如何使用GUI事件来检测鼠标是否按下的事件: 获取当前事件:var e:Event=Event.current: using UnityEngine; using System.Collectio ...

  7. Unity3D笔记 英保通四 虚拟轴应用及键盘事件

    Input: 1.使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据.想要读取轴向使用Input.GetAxis方法获取下列默认轴: "Horizontal&q ...

  8. Unity3D笔记 英保通三 脚本编写 、物体间通信

    一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...

  9. Unity3D笔记 英保通二

    一.访问另一个物体 1.代码中定义一个public的物体 例如:var target:Transform; 在面板上直接拖拽一个物体赋值给target 2.通过GameObject.Find(&quo ...

随机推荐

  1. Oracle统计每条数据的大小

    怎么查询一条记录到底占了多少空间呢,随便用一个表举例(如上图),就着解决眼前问题的原则(oracle),网上简单查了查,发现生效了,就没深入了解了,包括其它数据库怎么解决,都没做研究.Oracle下, ...

  2. 续:纠正:ubuntu 【6.04 LTS】可以安装安装 ! for《Oracle-10.2.0.1,打补丁10.2.0.5:在 debian 版本4【不含4】以上,及 ubuntu 7.04【不含7.04】以上都可以安装!》

    经过长时间的试错.探索,终于查明无法顺利安装oracle10g的原因,并且找到顺利安装的方式. 要点: 无法安装的根本原因有2: 1:libc6-dev的版本为2.23-0ubuntu10,其中的cr ...

  3. Synycovery 7.18f 一个优秀的同步软件

    Serial Key Name: Vdown RG Code: MCKOFA7MNGUQY7954

  4. PHPCMS V9 全站通用日期时间标签

    用PHPCMS V9 建站时,经常会用到时间标签,它是通用标签调用-日期时间格式化,适用全站. 1.日期时间格式化显示: a\标准型:{date('Y-m-d H:i:s', $rs['inputti ...

  5. c++单例设计模式---17

    原创博文,转载请标明出处--周学伟  http://www.cnblogs.com/zxouxuewei/ 全局变量在项目中是能不用就不用的,它是一个定时炸弹,是一个不安全隐患,特别是在多线程程序中, ...

  6. Android安装器学习笔记(一)

    Android安装器学习笔记(一) 一.Android应用的四种安装方式: 1.通过系统应用PackageInstaller.apk进行安装,安装过程中会让用户确认 2.系统程序安装:在开机的时候自动 ...

  7. 8 -- 深入使用Spring -- 3...1 Resource实现类FileSystemResource

    8.3.1 Resource实现类------FileSystemResource:访问文件系统的资源的实现类 3.访问文件系统资源 Spring提供的FileSystemResource类用于访问文 ...

  8. 九度 1494:Dota(完全背包)

    题目描述: 大家都知道在dota游戏中,装备是对于英雄来说十分重要的要素.英雄们不仅可以购买单个的装备,甚至某些特定的装备组合能够合成更强的装备.为了简化问题,我们将每个装备对于英雄的功能抽象为一个整 ...

  9. DropDownListFor的种种纠结(禁止转载)

    严重禁止转载,好多爬虫软件为了浏览到处抓东西,真缺德 具有键“CorpType”的 ViewData 项属于类型“System.Int64”,但它必须属于类型“IEnumerable<Selec ...

  10. WPF路由事件学习(一)

    路由事件与一般事件的区别在于:路由事件是一种用于元素树的事件,当路由事件触发后,它可以向上或向下遍历可视树和逻辑树,他用一种简单而持久的方式在每个元素上触发,而不需要任何定制的代码(如果用传统的方式实 ...