看了很多朋友问怎么用一个3D物体做一个按钮,而且网上好像还真比较难找到答案, 今天翻了一下cocos源码发现Ray 已经封装了intersects函数,那么剩下的工作其实很简单了, 从屏幕的一个point 转化为 一条射线, 然后从一个3D物体拿到碰撞盒后调用intersects 就可以了. : void HelloWorld::onEnter(){ Scene::onEnter(); //添加一只3D的乌龟在场景, 作为一个按钮 auto orc = cocos2d::Sprite3D::cr…
Unity 版本:4.5 NGUI版本:3.6.5 参考链接:http://game.ceeger.com/Script/Camera/Camera.ScreenPointToRay.html,Uniyt圣典   http://www.unitymanual.com/blog-4392-1229.html,作者:游戏蛮牛 han1127   http://www.cnblogs.com/alongu3d/archive/2013/01/05/raycast1.html,博客园 梦想之家 1.3D…
当场景中的3D物体需要响应点击,但同时有UI显示时,存在判断点击是在3D物体上还是UI上的问题,办法如下: 1. 射线检测所有2D 3D物体,有2D物体被检测到时表明当前有UI.但无论Physics2D.Raycast()还是Physics.Raycast()都只能检测到含有Collider组件的物体,普通UI如Image Button等一般用射线是不起作用的.EventSystem.current.RaycastAll()可以将当前屏幕上的所有可检测的物体全部检测到,该方法需要自己构造一个Po…
一.子弹的碰撞检测: 因为子弹的移动速度非常的快,那么如果为子弹添加一个collider,就有可能检测不到了. 因为collider是每一帧在执行,第一帧子弹可能在100米处,那么下一帧就在900米处了, 那么中间的障碍物就不能被检测到了. 所以就需要射线检测: 在每一帧的执行,都向上一帧发射射线,不断地检测射线中是否有穿过的障碍物体 void Update () { transform.Translate (Vector3.forward * Speed * Time.deltaTime);…
哎呀?为什么我设置了节点点击回调没反应呀? 记得在写小鸡拍拍的时候遇到一个问题,想要捕捉排球的点击事件,按照 2d 的写法,给3d 节点添加 node 事件,结果点了没反应.代码大概是以下的样子. this.node_volleyball.on(Node.EventType.TOUCH_START, () => { console.log('不可能看见我') }, this); 后来在论坛上找了个方法,稀里糊涂的写上去就完事了. 但是,最近我把版本升级到 v1.0.1 之后,发现之前的方法不管用…
核心要点:3D物体碰撞是靠射线检测,射线与碰撞器相撞获取对应的碰撞点信息. class RayPicking03 { private ray: Laya.Ray; private point: Laya.Vector2 = new Laya.Vector2(); private _outHitInfo: Laya.RaycastHit; private _position: Laya.Vector3; private _upVector3: Laya.Vector3; private _vect…
Unity射线检测--实现简单的开关门效果 简要:通过鼠标点击来发射一条射线,来获得射线所碰到的物体名称,再通过改变门的Rotation值来实现开关门的效果. 一.代码实现 1.1 简易的场景搭建 注:这里的门是unity资源商店下载的一个预制体. 1.2 给门添加碰撞体 选中要开的门页 添加Box Collider碰撞体(由于导入的资源包不带有碰撞体) 1.3 给门添加代码 新建C-sharp文件命名为DoorRay,编写代码文件: 测试,鼠标点击门页实现开关门效果. 代码:(相关解释代码中)…
最近有小伙伴问我瞄准线遇到各种形状该怎么处理?如何实现反复横跳的瞄准线?最近刚好在<Cocos Creator游戏开发实战>中看到物理系统有一个射线检测,于是,基于这个射线检测,写了一个反复横跳的瞄准线效果.一起往下看吧!文章底部获取完整项目! 国际惯例,先上最终效果! 在讲解之前我们需要一些向量的知识,简单的介绍一些吧! 向量的加法,OA + AB = OB 向量的点乘,表示一个向量在另一个向量上的投影,是个标量,有正负之分.向量夹角小于 90度 为正数,等于 90度 为 零,大于 90度…
通常来说,Unity自带的OnGUI不太好用,靠代码完成,在场景中无法直接编辑.所以,一般项目使用NGUI插件来做界面,但我这次要修改一个游戏,它没用NGUI,也没用OnGUI,而是使用类似NGUI的原理,采用Plane这种3D物体来做界面. 其实很简单,比如你需要一个按钮,就创建一个Plane,然后用对应的图片创建一个材质,给它贴上去就行了.这样只是显示了一张图片,要实现点击效果,还要在Update函数中捕获用户输入.我这里检测到输入时,先使用ScreenToWorldPoint函数来转换输入…
http://blog.csdn.net/lyh916/article/details/50947026 1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测:反面展示时,不会接收到射线检测:否则,正反面展示都会接收到射线检测 Bloc…