付费的网站推广该怎么做,注册会计师报名时间,专业网站优化服务,东莞品牌网站建设费用Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi… Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisionEnter()OnTriggerEnter() 碰撞显示效果OnCollisionEnter()OnTriggerEnter() 2D代码OnCollisionEnter2D()OnTriggerEnter2D() 碰撞显示效果OnCollisionEnter2D()OnTriggerEnter2D() 提示结语 前言
碰撞检测可以说时学习Unity中最重要的一个部分以为在游戏中想要游戏进行交互碰撞时非常重要的而我在网上查了很多教程但是都没有成功后来经过我的仔细检查代码与修改终于成功了
准备材料
3D
简单Unity跑酷游戏 简单跑酷游戏 在zhong_dot和Player两个实体都加上碰撞体组件 比如Box Collider 在Player加上刚体组件 比如Rigidbody 把刚体组件里面的Collision Detection模式改为Cintinuous
2D 在zhong_dot和Player两个实体都加上碰撞体组件 比如Box Collider 2D 在Player加上刚体组件 比如Rigidbody 2D 把刚体组件里面的Collision Detection模式改为Cintinuous
代码
这一个我们将代码写在Player_move.cs里面
3D
使用OnCollisionEnter()进行碰撞
Collider状态 代码
void OnCollisionEnter(Collision collision){if (collision.gameObject.name zhong_dot){Debug.Log(开始碰撞);}
}此时我们可以看到在碰撞函数里面的参数类型是Collision 并且指定的碰撞检测方式if里面写的表达式是
参数名.gameObject.name 碰撞目标的名称使用OnTriggerEnter()进行碰撞
Collider状态 从上图中可以看出是Is Trigger是出于勾选的状态并且只需要其中一个勾选Is Trigger状态即可
代码
void OnTriggerEnter(Collider collision){if (collision.GetComponentCollider().name zhong_dot){Debug.Log(开始碰撞)}
}此时我们可以看到在碰撞函数里面的参数类型是Collider 并且指定的碰撞检测方式if里面写的表达式是
参数名.GetComponentCollider().name 碰撞目标的名称2D
使用OnCollisionEnter2D()进行碰撞
Collider2D状态 代码
void OnCollisionEnter2D(Collision2D collision){if (collision.gameObject.name zhong_dot){Debug.Log(开始碰撞);}
}此时我们可以看到在碰撞函数里面的参数类型是Collision2D 并且指定的碰撞检测方式if里面写的表达式是
参数名.gameObject.name 碰撞目标的名称使用OnTriggerEnter2D()进行碰撞
Collider2D状态 从上图中可以看出是Is Trigger是出于勾选的状态并且只需要其中一个勾选Is Trigger状态即可
代码
void OnTriggerEnter2D(Collider2D collision){if (collision.GetComponentCollider2D().name zhong_dot){Debug.Log(开始碰撞)}
}此时我们可以看到在碰撞函数里面的参数类型是Collider2D 并且指定的碰撞检测方式if里面写的表达式是
参数名.GetComponentCollider2D().name 碰撞目标的名称区别
3D
代码
OnCollisionEnter()
此时我们可以看到在碰撞函数里面的参数类型是Collision 并且指定的碰撞检测方式if里面写的表达式是
参数名.gameObject.name 碰撞目标的名称OnTriggerEnter()
此时我们可以看到在碰撞函数里面的参数类型是Collider 并且指定的碰撞检测方式if里面写的表达式是
参数名.GetComponentCollider().name 碰撞目标的名称碰撞显示效果
OnCollisionEnter()
就会有碰撞之后被弹开的结果
OnTriggerEnter()
就不会有碰撞之后被弹开的结果
2D
代码
OnCollisionEnter2D()
此时我们可以看到在碰撞函数里面的参数类型是Collision2D 并且指定的碰撞检测方式if里面写的表达式是
参数名.gameObject.name 碰撞目标的名称OnTriggerEnter2D()
此时我们可以看到在碰撞函数里面的参数类型是Collider2D 并且指定的碰撞检测方式if里面写的表达式是
参数名.GetComponentCollider2D().name 碰撞目标的名称碰撞显示效果
OnCollisionEnter2D()
就会有碰撞之后被弹开的结果
OnTriggerEnter2D()
就不会有碰撞之后被弹开的结果
提示
我建议你们在写代码的时候一定要仔细查看代码的大小写否则程序会不知不觉不出现结果就像我写一个On结果写成了on导致一直没有结果
结语
其实学习Unity没有那么难只要你真心想学就还是能学得会