所以我遇到这个问题,我试图让子弹在Unity中摆脱障碍。目前我正在使用Vector3.Reflect设置我的对象的Vector3.Forward。
Expected Result vs. Actual Result
我的预期结果是子弹跟随红线。它反弹的每个物体旋转45度,因此子弹应该完全90度反弹。但实际发生的事情是在第二次反弹时,子弹跟随蓝线,从点开始卡在角落里。
if (data.GenList.length === 0) {
alert("No items found")
}
我认为我的问题要么与返回错误的法线有关,要么是因为我设置的是前向矢量而不是旋转但是我不确定如何将Vector3.Reflect转换成四元数可以理解的东西
答案 0 :(得分:1)
我找到了解决方案。我已经在这个问题上工作了2天,但是一旦我发布了这个问题,我就把它搞清楚了
private void OnCollisionEnter(Collision collision)
{
//if (collision.collider.tag == "Wall")
//Store new direction
Vector3 newDirection = Vector3.Reflect(transform.forward, collision.contacts[0].normal);
//Rotate bullet to new direction
transform.rotation = Quaternion.LookRotation(newDirection);
//add velocity to bullet based on new forward vector
bulletRigidBody.velocity = transform.forward * bulletSpeed;
}