unity鼠标检测问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity鼠标检测问题相关的知识,希望对你有一定的参考价值。
我在场景中放入一个cube,然后赋予其如下脚本:
function Start ()
function Update ()
if(Input.GetButtonDown("Fire1"))
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var hit : RaycastHit;
if(Physics.Raycast(ray,hit))
Application.LoadLevel (1);
应该是我点击该cube时才调用场景1,但是结果是,无论我点击什么位置都会调用场景1。求高人指点
//C#版本,实现你想要的功能
void Update ()
if (Input.GetButtonDown ("Fire1"))
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit = new RaycastHit ();
if (Physics.Raycast (ray, out hit))
if (hit.collider.gameObject == gameObject) //增加了判断
Application.LoadLevel (1);
追问
前一个gameObject是hit.collider的属性吗?后一个应该是“名称”吧?例如是cube1,是不是应该为
if (hit.collider.gameObject ==“cube1”)
?
还有,前面是不是应该是 hit.collider.gameObject.name?
是不是还要先定义一个能够指向cube1的变量呢?
多谢了哈
gameObject是monobehavior的属性,monobehaviour是最重要的脚本,这个gameObject表示一个对组件的引用。建议你仔细了解monobehaviour,GameObject,RigidBody,Collider等类中各字段的含义,他们是十分常用的。
参考技术A 不用这么麻烦,在cube上面放一个脚本function OnMouseDown()
Application.LoadLevel (1);
就行了
以上是关于unity鼠标检测问题的主要内容,如果未能解决你的问题,请参考以下文章