在引擎1.7.1之后,我们优化整合了鼠标拾取功能。
介绍此功能之前,大家必须要知道以下两个知识点!
1. 碰撞器Collider,LayaAir3D现支持的碰撞器有三种,分别是,
球型碰撞器SphereCollider
,
盒型碰撞器BoxCollider
,
网格碰撞器MeshCollider
。从
碰撞检测精确度
和
消耗性能
从低到高依次为SphereCollider-BoxCollider-MeshCollider;可以根据游戏中开发需求,选择适合的碰撞器。
2. 层的概念,场景中共有32层,你可以选择把精灵扔在任意层内。用在照相机上,照相机可以根据层级进行裁剪;
用在碰撞检测上,可以控制碰撞什么,不碰撞什么
。
* 在场景中投下可与所有碰撞器碰撞的一条光线,获取发生碰撞的第一个碰撞器。
* @param ray 射线
* @param outHitInfo 与该射线发生碰撞的第一个碰撞器的碰撞信息
* @param distance 射线长度,默认为最大值
* @param layer 选定制定层内的碰撞器,其他层内碰撞器忽略
Physics.rayCast(ray:Ray, outHitInfo:RaycastHit, distance:Number = Number.MAX_VALUE, layer:int = 0)
* 在场景中投下可与所有碰撞器碰撞的一条光线,获取发生碰撞的所有碰撞器。
* @param ray 射线
* @param outHitAllInfo 与该射线发生碰撞的所有碰撞器的碰撞信息
* @param distance 射线长度,默认为最大值
* @param layer 选定制定层内的碰撞器,其他层内碰撞器忽略
Physics.rayCastAll(ray:Ray, outHitAllInfo:Vector.<RaycastHit>, distance:Number = Number.MAX_VALUE, layer:int = 0)
两者的区别是第一个函数可得到检测碰撞到的第一个也是最近的碰撞器信息,第二个可得到所有与射线相交的碰撞器信息。
只说概念可能对一些初学者比较生疏, 直接说鼠标拾取的应用吧。以下我列举到3D游戏中 最常用的三个 鼠标拾取的应用 实例!这里只做简单讲解,具体的看示例代码!
一. 3D场景中拾取物体 -- 捡拾装备
1. 首先我在 场景中添加了一些基本的3D 几何体。注意看,我给每个几何体添加的碰撞器,这里完全为了碰撞的精确,真实项目酌情考虑。
2.其次,我需要一条射线,这条射线是从照相机视角根据鼠标坐标生成
3.最后,射线与所有几何物体检测碰撞,正常装备拾取功能是只捡最近的,由于下面两个演示的是rayCast这个函数,这里我们懂什么意思就可以,完全可以更改函数为rayCast,只选取最近的物体。由于我没有给任何模型添加层级,默认为第0层,这里最大检测碰撞距离为30米。
求指点3d射线碰撞和UI点击穿透的问题
btn 鼠标移动上去默认文本颜色是绿色,我想换成其他颜色,如何操作?
Unity场景使用Laya导出插件导出,总是提示LayaAir3D UnityPlugin: unknown Shader Please use LayaAir3D shader
龙骨skeleton鼠标点击区域的设置
Event.MOUSE_WHEEL 如何获取鼠标滚轮是放大开始缩小
想让一个2D的图形被鼠标点击时缩放一下,或左右摇晃一下,最后回到原大小或原位置,应该用什么缓动模式
graphics drawPath drawLine 鼠标 画笔 画线 锯齿
LayaAir3D 导出和使用U3D粒子特效
鼠标滚轮滚动事件
LayaAir引擎2D开发者3群(QQ群):674885952 LayaAir引擎3D开发者8群(QQ群):693598845
Powered By
Layabox Inc.