collision.contacts[0].normal
时间: 2024-05-26 08:18:23 浏览: 13
`collision.contacts[0].normal` 是 Unity 引擎中用于获取碰撞事件中第一个接触点的法线向量的属性。在碰撞发生时,该属性返回的是与碰撞体相交的表面的法线向量,可以用于计算碰撞后物体的反弹方向或者碰撞后物体的旋转方向。需要注意的是,`collision.contacts` 是一个数组,如果有多个接触点,可以通过索引值来获取不同的法线向量。
相关问题
unity 两个物体碰撞时入射角
在Unity中,可以使用Collision类中的collision.contacts属性获取碰撞点信息,然后利用向量夹角的公式来计算入射角。具体代码如下:
```c#
void OnCollisionEnter(Collision collision) {
// 获取碰撞点信息
ContactPoint contact = collision.contacts[0];
// 计算入射向量
Vector3 incomingVec = contact.normal - Vector3.Dot(contact.normal, collision.relativeVelocity) * collision.relativeVelocity.normalized;
// 计算入射角度
float angle = Vector3.Angle(incomingVec, contact.normal);
Debug.Log("入射角度: " + angle);
}
```
其中incomingVec是入射向量,其计算方式为:将相对速度分解到碰撞点的法线上,得到垂直于法线的向量,然后用法线减去这个向量得到入射向量。最后使用Vector3.Angle方法计算入射向量和法线向量的夹角即可得到入射角度。
unity 将相对速度分解到碰撞点的法线上,得到垂直于法线的向量,然后用法线减去这个向量得到入射向量。最后使用Vector3.Angle方法计算入射向量和法线向量的夹角即可得到入射角度。
非常抱歉,我的回答有误,应该是将相对速度分解到碰撞点的切线上,得到垂直于切线的向量,然后用法线减去这个向量得到入射向量。最后使用Vector3.Angle方法计算入射向量和切线向量的夹角即可得到入射角度。
具体代码如下:
```c#
void OnCollisionEnter(Collision collision) {
// 获取碰撞点信息
ContactPoint contact = collision.contacts[0];
// 计算切向量
Vector3 tangentVec = Vector3.Cross(contact.normal, collision.relativeVelocity);
// 计算入射向量
Vector3 incomingVec = Vector3.Cross(contact.normal, tangentVec);
// 计算入射角度
float angle = Vector3.Angle(incomingVec, contact.normal);
Debug.Log("入射角度: " + angle);
}
```
其中tangentVec是切向量,其计算方式为:将碰撞点的法线和相对速度进行叉积运算,得到一个与法线垂直的向量。最后再将法线和切向量进行叉积运算得到入射向量,使用Vector3.Angle方法计算入射向量和法线向量的夹角即可得到入射角度。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)