unity3d研究1-点击选中物体

方法1:OnMouseDown()只针对脚本挂载的物体有效

首先,要给 物体加上 碰撞器Collider

然后在物体脚本上加入

    void OnMouseDown()//只针对脚本挂载的物体有效
    {
        Debug.Log("jiance");
    }

方法2:检测从屏幕发出的射线与物体发生碰撞,而这个发生碰撞的物体就是你选中的物体。

首先,要给 物体加上 碰撞器Collider

然后在物体脚本上加入

void MobilePick()
{
    if (Input.touchCount != 1 )
        return;  

    if (Input.GetTouch(0).phase == TouchPhase.Began)
    {
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);  

        if (Physics.Raycast(ray, out hit))
        {
            Debug.Log(hit.transform.name);
            //Debug.Log(hit.transform.tag);
        }
    }
}  

void MousePick()
{
    if(Input.GetMouseButtonUp(0)) //首先判断是否点击了鼠标左键
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);  //定义一条射线,这条射线从摄像机屏幕射向鼠标所在位置
        RaycastHit hit;  //声明一个碰撞的点(暂且理解为碰撞的交点)

        if (Physics.Raycast(ray, out hit))  //如果真的发生了碰撞,ray这条射线在hit点与别的物体碰撞了
        {
            Debug.Log(hit.transform.name);
            //Debug.Log(hit.transform.tag);
        }
    }
}  

可见,在unity3d中,选中物体有一个必要条件,就是物体能发生碰撞。这个参数就是碰撞器Collider,Collider是发生物理碰撞的基本条件。

所以如果无法选中物体时,要检查是否物体加了碰撞器。

方法如下:

GameObject gameObject = (GameObject)Instantiate(...);  

gameObject.name = "game_object";
gameObject.AddComponent<MeshCollider>();  
时间: 2024-12-20 10:30:17

unity3d研究1-点击选中物体的相关文章

unity3d点击屏幕选中物体

原文  http://blog.csdn.net/mycwq/article/details/19906335 前些天接触unity3d,想实现点击屏幕选中物体的功能.后来研究了下,实现原理就是检测从屏幕发出的射线与物体发生碰撞,而这个发生碰撞的物体就是你选中的物体. void MobilePick() { if (Input.touchCount != 1 ) return; if (Input.GetTouch(0).phase == TouchPhase.Began) { RaycastH

Unity3D研究之监听Hierachy、Project等视图结构变化的事件

以前就有人问我怎么监听Hierarchy视图中创建或删除变化的事件,当时因为有别的事情就没研究这块.刚好最近有这一类的需求我就学习学习.网上发现了一个日本人写的文档,实现的原理很有意思,内容不错我就翻译一下.本文参考了一个游戏编程网的资料在此注明下. 请注意一定把这两个监听的脚本放在Editor文件夹下. 先是基类. using System; using System.Collections; using System.Reflection; using UnityEditor; using

checkbox点击选中,再点击取消,并显示在文本框中

function checkItem(e,itemId) { var item = document.getElementById(itemId); var $items = $(item); if (e.checked) { var checkval = $items.val(); var str = $("#txtFilePath").val() + checkval; $("#txtFilePath").val(str); } else { var a = &

Js效果:图片轮播;选项卡;侧面菜单下拉效果;进度条效果;滑动效果;好友列表选中效果;点击选中显示效果

选项卡效果表: <body><div id="aaa"> <div class="bbb" style="width:50px; height:30px; background-color:#3F0" onclick="Show('d1')">娱乐</div> <div class="bbb" style="width:50px; height

Unity3D研究之asset bundle 格式简析详解

Unity3D 的 asset bundle 的格式并没有公开.但为了做更好的差异更新,我们还是希望了解其打包格式.这样可以制作专门的差异比较合并工具,会比直接做二进制差异比较效果好的多.因为可以把 asset bundle 内的数据拆分为独立单元,只对变更的单元做差异比较即可. 网上能查到的资料并不是官方给出的,最为流行的是一个叫做 disunity 的开源工具.它是用 java 编写的,只有源代码,而没有给出格式说明(而后者比代码重要的多).通过阅读 disunity 的代码,我整理出如下记

[Flex] 组件Tree系列 —— 阻止用户点击选中Tree中任何节点

mxml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--功能描述:阻止用户点击选中Tree中任何节点--> 3 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 4 xmlns:s="library://ns.adobe.com/flex/spark" 5 xmlns:mx="

[Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点

mxml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--功能描述:阻止用户点击选中Tree中分支节点--> 3 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 4 xmlns:s="library://ns.adobe.com/flex/spark" 5 xmlns:mx="

jquery解决input[type=radio]点击选中取消

input[type=radio] 点击选中后,再次点击选中项,默认是不会取消的.用jquery实现点击选中取消的代码: <input type="radio" name="hobby"> 篮球 <input type="radio" name="hobby"> 足球 <input type="radio" name="hobby"> 网球 $(doc

phpcms栏目点击选中

点击选中(没有二级栏目) {pc:content action="category" catid="0" num="4" siteid="$siteid" order="listorder ASC"} {loop $data $r} {if $catid==$r[catid]} <a href="{$r[url]}"> <div class="menu men