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 物体中,通过对鼠标点击位置的射线进行碰撞检测,然后判断点击的是不是当前的对象即可

void Update()
{
if (Input.GetButtonDown("Fire1"))
{ Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit; if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject == gameObject)
{
//插入执行代码
}
}
}
}

2、世界坐标转为NGUI坐标:

// 获取目标物体的屏幕坐标
Vector3 pos = Camera.main.WorldToScreenPoint(gameobject); // 将屏幕坐标转换为UI的世界坐标
pos = UICamera.currentCamera.ScreenToWorldPoint(pos);
// 由于NGUI 2D界面的Z轴都为0
pos.z = ; // 将修改过的坐标赋给UI界面
_button.transform.position = new Vector3(pos.x, pos.y, pos.z);

3、NGUI坐标转为世界坐标:

// 获取按钮的屏幕坐标
Vector3 pos = UICamera.currentCamera.WorldToScreenPoint(_button.transform.position);
pos.z = ; pos = Camera.main.ScreenToWorldPoint(pos);
_cube.transform.position = new Vector3(pos.x,pos.y,pos.z);

Unity 3D物体的点击事件响应以及NGUI坐标和世界坐标的互相转换的更多相关文章

  1. unity 3D物体使用EventSystem响应事件

    在ugui中创建一个canvas 之后会自动创建一个EventSystem,用来处理UI上的时间响应.(可以通过UI>EventSystem创建EventSystem) EventSystem ...

  2. Unity UGUI按钮添加点击事件

    1. 可视化创建及事件绑定 # 1 : 通过 Hierarchy 面板创建 UI > Button. 2 : 创建一个脚本 TestClick.cs, 定义了一个 Click 的 public ...

  3. cocos 射线检测 3D物体 (Sprite3D点击)

    看了很多朋友问怎么用一个3D物体做一个按钮,而且网上好像还真比较难找到答案, 今天翻了一下cocos源码发现Ray 已经封装了intersects函数,那么剩下的工作其实很简单了, 从屏幕的一个poi ...

  4. UNITY中的MOUSE点击事件的判断和AS3中的异同

    UNITY - 在UPDATE中轮询检测 Update() { if(Input.GetButton("Fire1") } AS3 - 事件监听 addEventListener. ...

  5. unity的sprite添加点击事件

    直接说方法 添加一个2dxxx的碰撞器 添加一个OnMouseDown的回调函数,这个函数看script reference就可以

  6. unity实现3D物体上的事件监听处理

    想要在3D物体上实现全套事件监听处理: OnMouse系列 OnTrigger系列 OnPointer系列 OnDrag系列   1.在相机中添加Physics Raycaster组件 2.3D物体上 ...

  7. Unity 弹出界面时屏蔽对3D场景的点击

    注:这里的UI制作用的是NGUI插件 如题,在游戏中经常会遇到这种情况,场景中点击相关物体或者按钮弹出对应的2D界面,这时候除了2D界面上的可点击按钮等,应该屏蔽掉对3D场景的点击或者拖动事件. 在这 ...

  8. UI和3D物体的堆叠响应

    一.问题:当3D物体和UI元素重叠显示时一般UI元素会遮挡物体,这时点击UI元素响应时UI后方的物体也会响应. private void OnMouseDown() { ChangeColor(); ...

  9. android学习之4种点击事件的响应方式

    如题,下面就一一列出对点击事件响应的4种方式: 第一种:内部类的形式: package com.example.dail; import android.net.Uri; import android ...

随机推荐

  1. Java基础知识强化之集合框架笔记38:Set集合之Set集合概述和特点

    1. Set集合概述和特点 Collection            |--List                     有序(存储顺序和取出顺序一致),可重复            |--Se ...

  2. Java——(七)Map之HashMap和Hashtable实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Map Map用于具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的ke ...

  3. LDAP7卸载

    3 Uninstalling Directory Server Enterprise Edition This chapter provides instructions for uninstalli ...

  4. Jquery 判断滚动条到达顶部或底部

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. iOS Safari 中点击事件失效的解决办法

    问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效. ...

  6. hibernate中使用HQL进行数据库查询

    1.写的规则比较简单,我讲一下,如图Station这个不是数据库中的表,而是entity包中的类名Station,可以省略 select * 2.返回的类型自动转化为String类型,不用你自己再转化 ...

  7. angularjs sortbale

    参考地址:http://kamilkp.github.io/angular-sortable-view 案例:jsp: <div sv-root sv-part="vm.dataLis ...

  8. Linux运行C#程序

    首先需要安装mono 安装教程http://www.cnblogs.com/aixunsoft/p/3422099.html 然后 用终端执行C#程序就可以了,mono 程序文件名 可以直接执行win ...

  9. How to Make LastPass Even More Secure with Google Authenticator

    Google Authenticator LastPass supports Google Authenticator, which is officially available as an app ...

  10. Linux 删除文件夹

    inux删除目录很简单,很多人还是习惯用rmdir 1.直接rm就可以了:rm -rf 目录名字 -r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思