Unity Manual之Physics.Raycast射线投射
2015-09-06 01:46
253 查看
Unity Manual之Physics.Raycast射线投射
1、C# ⇒ public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers);当光线投射与任何碰撞器交叉时为真,否则为假。
在场景中投下可与所有碰撞器碰撞的一条光线。
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { Vector3 fwd = transform.TransformDirection(Vector3.forward); if (Physics.Raycast(transform.position, fwd, 10)) print("There is something in front of the object!"); } }
注意:如果射线从碰撞体的内部或者背面打,Raycast不检测碰撞。如果你用脚本或动画移动碰撞器,需要至少一个在FixedUpdate执行,因为物理库能更新它的数据结构,因此一条射线在它的新位置之前打到碰撞器。
2、C# ⇒ public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { RaycastHit hit; if (Physics.Raycast(transform.position, -Vector3.up, out hit)) float distanceToGround = hit.distance; } }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { RaycastHit hit; if (Physics.Raycast(transform.position, -Vector3.up, out hit, 100.0F)) float distanceToGround = hit.distance; } }
3、C# ⇒ public static bool Raycast(Ray ray, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, 100)) print("Hit something"); } }
4、C# ⇒ public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100)) Debug.DrawLine(ray.origin, hit.point); } }
==================================================================================
结束。
相关文章推荐
- Unity Game Programming AI(3)路径跟随
- 学习-unity3d-游戏开发需要掌握什么技能
- Unity 2D游戏开发教程之2D游戏的运行效果
- Unity 2D游戏开发教程之摄像头追踪功能
- unity编辑器扩展带快捷键使用方法
- Unity3D开发随手笔记
- unity优化
- unity内存管理
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3d之Shader开发介绍
- unity之连接SQLite数据库
- 【unity-Xcode】开发记录---备忘
- Unity中三种截屏方法
- Unity简介
- 对Unity3D 中Quaternion一些整理
- Unity3D协程介绍 以及 使用
- unity编辑器设备丢失
- Unity 如何检测鼠标双击事件
- Unity3d通用工具类之生成文件的MD5
- Unity3d通用工具类之生成文件的MD5