Unity中的unity 碰撞体被穿透怎么会穿透的这么厉害

Unity3D总结:关于射线碰撞 - CSDN博客
Unity3D总结:关于射线碰撞
方法一:.Raycast 光线投射
1.static function&Raycast&(origin&:&,&direction&:&,&distance&:
float =&,&layerMask&:
int = kDefaultRaycastLayers) : bool
一个静态的发射射线的方法,在场景中投下可与所有碰撞器碰撞的一条光线。
参数解释:
origin:射线起始点
direction:射线方向
& &distance:射线长度
& &layerMask:只选定Layermask层内的碰撞器,其它层内碰撞器忽略。
返回布尔类型,当光线投射与任何碰撞器交叉时为真,否则为假。
(注意:如果从一个球型体的内部到外部用光线投射,返回为假。
)这一点测试不成功!
function&Raycast&(origin&:&,&direction&:&,&out
hitInfo&:&,&distance&:
float =&,&layerMask&:
int = kDefaultRaycastLayers) : bool
在场景中投下可与所有碰撞器碰撞的一条光线,并返回碰撞的细节信息。
Parameters参数
The starting point of the ray in world coordinates.
在世界坐标,射线的起始点。
The direction of the ray.
射线的方向。
The length of the ray
射线的长度。
If true is returned, hitInfo will contain more information about where the collider was hit (See Also:&).
如果返回true,hitInfo将包含碰到器碰撞的更多信息。
A Layer mask that is used to selectively ignore colliders when casting a ray.&
只选定Layermask层内的碰撞器,其它层内碰撞器忽略。
当光线投射与任何碰撞器交叉时为真,否则为假。
使用c#中out关键字传入一个空的碰撞信息类,然后碰撞后赋值。可以得到碰撞物体的transform,rigidbody,point等信息。
详细解释一下:
LayerMask 层蒙版
如图所示,每一个物体都有一个Tag和Layer标签,tag就是一个简单的标签,可以用来区分不同的物体,LayerMask的作用是可以选择性地过滤物体,例如当投射射线时,比如camera.cullingmask和光线投射时候。
如图,可以在TagManager中编辑tag和Layer
然后设置物体的Layer层级,在摄像机中设置camera.cullingmask,可以控制摄像机的渲染层级,用在射线上,可以控制射线碰撞什么,不碰撞什么。
//Raycast hit
RaycastHit
LayerMask mask =
void testRay(){
if(Physics.Raycast(transform.position,Vector3.right,out
hit,100, mask.value)){
Debug.DrawLine(transform.position,hit.point,Color.red,1);
上面的例子是从当前脚本所绑定的物体做标点向右发射长度100的射线,射线碰撞层级为8,其他层级忽略。
为了测试,我们在碰撞到物体后画一条红色线条,表示射线,停留一秒钟。
上面这些是射线的一些基本操作。
方法二:.RaycastAll
static function&RaycastAll&(ray&:&,&distance&:
layerMask : int = kDefaultRaycastLayers) :&[]
static function&RaycastAll&(origin&:&,
direction :&,
distance : float =&,
layermask : int = kDefaultRaycastLayers) :&[]
投射一条光线并返回所有碰撞,也就是投射光线并返回一个RaycastHit[]结构体。
有一部分人说没效果,我想可能是layer值没有设置正确,layer的值应该是等于2的n次方,这个n是layer面板上的值,只要设置正确,应该是没有问题的
本文已收录于以下专栏:
相关文章推荐
Physics.Raycast
static function Raycast (origin : Vector3, direction : Vector3, distance...
在unity项目里3D场景中如果有用到射线的,鼠标点击UI会发生UI会被穿透,导致3D场景里的射线触发。举个例子:下面场景里,在3D场景里点击地面人物(红色的cube)会移动到点击的地方,现在有个bu...
using UnityE
using System.C
public class Lu : MonoBehaviour
public Camera cam...
小白欢迎评论,共同探讨,共同进步
   一般的射线射中物体后就被阻挡了,假如碰到物体后,就会被拦截。如果我们想实现穿透某些物体,或者使射线不穿透UI的话。这时候就需要穿透的知识了。
下面写一...
Ray(Vector3 origin, Vector3 direction)
Ray:在程序中可以理解为射线,就是以某个位置(origin)朝某个方向(direction)的一条射线; 所以在应用R...
Physics.Raycast 理解
方法原型与参数说明
其实这个函数有个很藏的很深的地方就是这个layermask, 一般情况我们获取layer的值都会是layermask.nametolay...
Ray Camera.main.ScreenPointToRay(Vector3 pos)   返回一条射线Ray从摄像机到屏幕指定一个点
Ray Camera.main.ViewportPoi...
/article/p-1687198.html
最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的document,而且个人...
射线,类比的理解就是游戏中的子弹。是在3D世界里中一个点向一个方向发射的一条无终点的线。在发射的过程中,一旦与其他对象发生碰撞,就停止发射。
射线的原理
创建一个射线时,首先需...
Unity3D3.4
MB525defy Android 2.2.1
       羽化的第六篇博客,又一个星期又过去了,写写博客慢慢成了一个习惯吧,可以记点事...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)鏌ョ湅: 10410|鍥炲?: 9
4.6鐗堟湰鏂癠I绯荤粺濡備綍闃叉? 鐐瑰嚮琚?┛閫忔搷浣}

我要回帖

更多关于 穿透力强的中草药 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信