在“Project”面板中单击“Create”旁边的小三角,选择“javascript”创建一个名为“collision”的js文件。双击它,系统启动Monodevelop来编辑js文件。
清除里面默认创建的代码。写上。
function OnCollisionEnter(obj:Collision)
{
Debug.Log(obj.gameObject.name);
}
onCollisionEnter函数解释:这个函数是在被绑定的物体与其他物体发生碰撞的时候被调用。
obj参数解释:被撞的物体参数,类型是Collision,在本例中就是“地板”.携带变量gameObject,是我们碰撞的物体name,就是我们为地板设置的name。
将脚本文件拖到球上实现绑定:
这步很容易操作,在"Project"面板中选中collision脚本,按住鼠标左键不放,直接拖入“Hierarchie”面板中,放到立方体上,松开鼠标即完成绑定。
点顶部的小三角运行程序:
程序运行结果,当球与地板碰撞时,unity3d底部状态栏会输出地板的name
搞定。
OnControllerColliderHit(),这个是用于角色碰撞的,物体如果附加了Charactor Controller(Unity自带的用于角色控制的脚本)则使用这个函数检测碰撞,这是不需要加刚体的。一般的刚体之间碰撞使用OnCollisionEnter(),范围触发用OnTriggerEnter(),如果你是让两个CUBE碰撞,请确保其中一个附加了RigidBody,
collision是个变量,通过它可以获得你所碰撞的目标的属性以及碰撞点信息和相对速度,如:collision.collider.某个组件或脚本。 void OnCollisionEnter(Collision collision){if(collision.collider.tag=="enemy")//tag是物体的标签,相当于物体的类别名称。在每一个物体的组件栏(也就是加脚本的那个区域)的最上面可以找到,默认的是UnTagged,也就是没有标签,你找找,然后点击会出现一个下拉列表,默认的已有几个Tag,你也可以加自定义的,点击下拉列表最下方的Add Tag就可以加Tag,最后选择一个Tag作为物体的名称就可以了。{Destroy(collision.collider.gameObject);//如果检测到对方是敌人,则消灭对方。}}