惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
博客园 - 司徒正美
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
D
Docker
Blog — PlanetScale
Blog — PlanetScale
Recent Announcements
Recent Announcements
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
腾讯CDC
T
The Blog of Author Tim Ferriss
小众软件
小众软件
U
Unit 42
T
Tailwind CSS Blog

博客园 - O和尚O

Time.timeScale 对 协程WaitForSeconds的影响 [转]Coroutine,你究竟干了什么? 转:Automatic Layout Groups How to Add Collider to Line Renderer in Unity [转] Edit Terrain foliage/texture at runtime [转]How to translate WORLD coordinates to TERRAIN coordinates in Unity3d [转]如何获取Untiy地形某一位置的贴图类型 Path Follow System using Waypoints C# [转]一步步使用3Dmax+Photoshop为游戏关卡设计瓦片化3D模型和无缝贴图(视频教程) [转]Unity游戏开发视频培训 [转]如何管理一个远程团队 [转]以《AI War》为例阐述AI元素概念与代码 [转]分享AI寻径设计的射线追踪法 [转]如何反推一个游戏 mac下汇编hello world 转:相机碰撞检测 转:拾起并拖拽物体(使用rigidbody.velocity) 转:如何设计一个沉浸式UI 转:如何实现一个滚动列表
Physics.Raycast重载方法的参数隐式转换引发的血案
O和尚O · 2015-11-26 · via 博客园 - O和尚O

我用Raycast检测两个物体是否碰撞,发现无论如何结果都不太对劲,ray貌似忽略了我设置的LayerMask

代码是这样的:

Physics.RaycastAll(start, Vector3.down, 1 << mask);

看出来问题在哪里了么?

尼玛,根本没有Physics.Raycast(Vector3 start, out RaycastHit hit, int layerMask) 这样的重载好不好。。。

我不知道从哪儿得来的一个印象,觉得有这么一个重载,就一直在用。

但是为什么这样调用编译没问题呢,这涉及到了C#参数的隐式转换。

Physics.Raycast恰好有一个重载方法是:

Physics.Raycast(Vector3 start, out RaycastHit hit, float maxDistance)

因为1<<mask是int,隐式转换成float,符合了上面的重载,于是编译是不会出错的。但这样的结果根你期待的设置LayerMask是完全不一样的,你只不过设置了一个maxDistance值等于layermask值的ray

正确的重载应该是:

Physics.Raycast(Vector3 start, out RaycastHit hit, float maxDistance,int layerMask)