unity 怎么判断碰撞的物体?我的场景里面有A模型(cube) 和B模型(cube),在A和B上都加了物理属性,(都会落到地上) 现在我想写一个碰撞脚本,只有当A和B相撞才会触发...请问各位怎么写?我看
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 23:44:58
unity 怎么判断碰撞的物体?我的场景里面有A模型(cube) 和B模型(cube),在A和B上都加了物理属性,(都会落到地上) 现在我想写一个碰撞脚本,只有当A和B相撞才会触发...请问各位怎么写?我看
unity 怎么判断碰撞的物体?
我的场景里面有A模型(cube) 和B模型(cube),在A和B上都加了物理属性,(都会落到地上) 现在我想写一个碰撞脚本,只有当A和B相撞才会触发...请问各位怎么写?
我看了个老外是这么写的:
function OnControllerColliderHit(hit:ControllerColliderHit){
if(hit.gameObject.tag == "one") //被撞的物体的名字为“one”
{
aa.text="1";
}
}
但是我这没一点反映...
unity 怎么判断碰撞的物体?我的场景里面有A模型(cube) 和B模型(cube),在A和B上都加了物理属性,(都会落到地上) 现在我想写一个碰撞脚本,只有当A和B相撞才会触发...请问各位怎么写?我看
上面这个老外用的是 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);//如果检测到对方是敌人,则消灭对方.
}
}
去查询自带的帮助文档,搜索OnCollision,有详细的范例
你的例子里面不是单纯的碰撞判断,还能给予碰撞的刚体推力。具体搜索帮助文档OnControllerColliderHit。
至于你没有反应,可能是因为标签没有定义,hit.gameObject.tag == "one"并不是物体名字为“one”而是物体的标签(tag)名称为“one”,而tag是需要预先定义的。
全部展开
去查询自带的帮助文档,搜索OnCollision,有详细的范例
你的例子里面不是单纯的碰撞判断,还能给予碰撞的刚体推力。具体搜索帮助文档OnControllerColliderHit。
至于你没有反应,可能是因为标签没有定义,hit.gameObject.tag == "one"并不是物体名字为“one”而是物体的标签(tag)名称为“one”,而tag是需要预先定义的。
如果想判断碰撞物体的名称,应该是hit.gameObject.name == "one"
收起