Unity3D教程:鼠标碰撞检测与事件监听

开发 游戏开发
使用Unity3D开发的3D游戏,鼠标事件的检测也是常见的问题之一。处理的手段非常简单,请看下文。

首先创建JS脚本,源码如下:

  1. function Update () {   
  2.     if(Input.GetButtonDown("Fire1")){   
  3.         var ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
  4.         var hit : RaycastHit;   
  5.         if(Physics.Raycast(ray,hit)){   
  6.             hit.collider.SendMessage("ApplyDamage",1,SendMessageOptions.DontRequireReceiver);   
  7.         }   
  8.     }   
  9. }   
  10.  
  11. function ApplyDamage(){   
  12.     Debug.Log("HitMe!");   
  13. }   

鼠标点击的时间在Input中显示为Fire1,点击响应后截取到鼠标点击的屏幕上的点的那条射线,并将其进行碰撞检测,从而获取鼠标点击的物体事件。

将此脚本拖到任意GameObject上,运行游戏点击该物体则在Console显示Hit Me!通过这种方式可以实现点击鼠标的事件,并且满足更为高端的需求。Unity3D教程手册

当然很多情况下的响应事件并不是物体本身,比如一个敌人GameObject,里面放一个碰撞体实现碰撞检测,常常是碰撞体上有JS脚本实现碰撞响应,而事件的调用写在GameObject的脚本中,比如这样的框架:

Unity3D教程:鼠标碰撞检测与事件监听

其中Cube是检验碰撞的碰撞体,而UpUpwards是响应的物体。那么脚本就需要这样写:

  1. function Update () {   
  2.     if(Input.GetButtonDown("Fire1")){   
  3.         var ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
  4.         var hit : RaycastHit;   
  5.         if(Physics.Raycast(ray,hit)){   
  6.             hit.collider.SendMessageUpwards("ApplyDamage",1,SendMessageOptions.DontRequireReceiver);   
  7.         }   
  8.     }   
  9. }   

然后在那个UpUpwards的脚本中加上响应的方法:

  1. #pragma strict   
  2. var words:String;   
  3. function ApplyDamage(){   
  4.     Debug.Log(words);   
  5. }   

然后在Unity中把这个脚本一次拖到两个upwards和upupwards上面,并且给words赋值,运行发现,这两个GameObject都收到了消息:

责任编辑:彭凡 来源: Unity3D教程手册
相关推荐

2012-12-24 08:52:44

iOSUnity3D

2012-12-24 09:15:57

iOSUnity3D

2013-06-14 09:54:04

Unity3D

2013-04-25 09:56:24

unity3D手机游戏引擎

2013-04-25 10:03:07

unity3D手机游戏引擎

2013-06-19 08:52:48

Unity3D

2022-12-26 07:37:14

四叉树Canvas

2013-06-18 08:49:15

2012-12-24 09:06:14

iOSUnity3D

2013-04-25 13:27:11

unity3D手机游戏引擎

2013-04-25 09:08:39

unity3D手机游戏引擎

2013-04-09 13:42:23

Unity3D基础知识梳理

2012-12-24 09:09:27

AndoidUnity3D

2009-07-15 10:40:06

碰撞检测算法Java ME

2012-12-24 09:19:31

iOSUnity3D

2012-12-24 08:51:23

iOSUnity3D

2012-12-24 08:40:12

2012-12-24 09:08:14

iOSUnity3D

2012-12-24 09:11:58

iOSUnity3D

2012-12-24 09:18:22

iOSUnity3D
点赞
收藏

51CTO技术栈公众号