学习Unity脚本推荐:Unity3D官网索引
使用Unity3D开发3D游戏是鼠标事件的检测也是常见的问题之一。
处理的手段非常简单,创建JS脚本,源码如下:
function Update () { if(Input.GetButtonDown("Fire1")){ var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var hit : RaycastHit; if(Physics.Raycast(ray,hit)){ hit.collider.SendMessage("ApplyDamage",1,SendMessageOptions.DontRequireReceiver); } } } function ApplyDamage(){ Debug.Log("HitMe!"); }
将此脚本拖到任意GameObject上,运行游戏点击该物体则在Console显示Hit Me!
通过这种方式可以实现点击鼠标的事件,并且满足更为高端的需求。
当然很多情况下的响应事件并不是物体本身,比如一个敌人GameObject,里面放一个碰撞体实现碰撞检测,常常是碰撞体上有JS脚本实现碰撞响应,而事件的调用写在GameObject的脚本中,比如这样的框架:
其中Cube是检验碰撞的碰撞体,而UpUpwards是响应的物体。
那么脚本就需要这样写:
function Update () { if(Input.GetButtonDown("Fire1")){ var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var hit : RaycastHit; if(Physics.Raycast(ray,hit)){ hit.collider.SendMessageUpwards("ApplyDamage",1,SendMessageOptions.DontRequireReceiver); } } }
然后在那个UpUpwards的脚本中加上响应的方法:
#pragma strict var words:String; function ApplyDamage(){ Debug.Log(words); }