unity 实时画面投屏到手机_Unity物理投射相关问题整理

1.投射目标是否需要附加刚体,是否可忽略触发器?

默认既支持触发器,也支持刚体。投射的最后一个参数queryTriggerInteraction可以设置,是否包含触发器事件。

2.非射线投射,是否有接触点信息?

投射物刚好相交则会返回接触点信息(hits.point)法线信息等,如果是包含则没有,返回(0,0,0)。

即使设置了投射方向,投射距离也是如此。安全的做法还是用射线投射

3.NonAlloc系列方法注意事项

你建立的缓存数组可以重复用,但需要每次使用时手动清除之前的状态,这个方法并不会帮你清除。

或者通过返回值的数量来遍历。

4.发射的投射方向为Vector3.zero,为无效方向,此时不会返回结果。

5.发射的投射大小不能用Vector3.one*float.MaxValue,或者极大的数,否则检测无效。

(但int.MaxValue倒是可以)

var hits = Physics.BoxCastAll(Vector3.zero, Vector3.one * 10000, Vector3.zero, Quaternion.identity, 0);

Debug.Log("Hits length:" +hits.Length);foreach (var item inhits)

{

Debug.Log(item.transform.name);

}

打印:Hits length: 0

6.是否存在被一个更大的Collider包裹而无法返回正确结果

2017/5/23 - 重新测试之后,更正下测试结果,之前有误

使用Check系列API,比如Physics.CheckBox(...) 是可以检测到的

使用Overlap系列API,比如Physics.OverlapBox(...)也是可以检测到的

而使用Cast系列API,比如Physics.Raycast。则检测不到,必须在包裹Collider的外面。

无论是Box,Capsule还是Ray,Line都不行。

另外对于MeshCollider,如果一定要用cast来检测,可以用脚本做成双面的MeshCollider

以上测试版本是unity5.5.2 f1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值