作业帮 > 综合 > 作业

unity 怎么判断碰撞的物体?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 08:59:29
unity 怎么判断碰撞的物体?
我的场景里面有A模型(cube) 和B模型(cube),在A和B上都加了物理属性,(都会落到地上) 现在我想写一个碰撞脚本,只有当A和B相撞才会触发...请问各位怎么写?
我看了个老外是这么写的:
function OnControllerColliderHit(hit:ControllerColliderHit){
if(hit.gameObject.tag == "one") //被撞的物体的名字为“one”
{
aa.text="1";
}
}
但是我这没一点反映...
unity 怎么判断碰撞的物体?
上面这个老外用的是 OnControllerColliderHit(),这个是用于角色碰撞的,物体如果附加了Charactor Controller(Unity自带的用于角色控制的脚本)则使用这个函数检测碰撞,这是不需要加刚体的.一般的刚体之间碰撞使用OnCollisionEnter(),范围触发用OnTriggerEnter(),如果你是让两个CUBE碰撞,请确保其中一个附加了RigidBody,然后这样写(我用C#):
void OnCollisionEnter(Collision collision)
{
Debug.Log("You touch me");
}
collision是个变量,通过它可以获得你所碰撞的目标的属性以及碰撞点信息和相对速度,如:
collision.collider.某个组件或脚本.
void OnCollisionEnter(Collision collision)
{
if(collision.collider.tag=="enemy")//tag是物体的标签,相当于物体的类别名称.在每一个物体的组件栏(也就是加脚本的那个区域)的最上面可以找到,默认的是UnTagged,也就是没有标签,你找找,然后点击会出现一个下拉列表,默认的已有几个Tag,你也可以加自定义的,点击下拉列表最下方的Add Tag就可以加Tag,最后选择一个Tag作为物体的名称就可以了.
{
Destroy(collision.collider.gameObject);//如果检测到对方是敌人,则消灭对方.
}
}