在计算反弹后的新射线时,可以使用以下方式:

// 计算反弹后的新射线
var normal = (Vector3)leftHitPos - startPoint; // 计算反弹面的法线方向
var reflectedDirection = Vector3.Reflect(ray.direction, normal); // 计算反射后的方向向量
var reflectedRay = new Ray((Vector3)leftHitPos, reflectedDirection); // 创建反射后的射线
result.Add((Vector3)leftHitPos); // 添加碰撞点到路径点
result.Add((Vector3)leftHitPos + reflectedDirection); // 添加反射点到路径点
ray = reflectedRay; // 更新射线为反射后的射线

对于右壁反弹,可以使用类似的方法进行计算:

// 计算反弹后的新射线
var normal = (Vector3)rightHitPos - startPoint; // 计算反弹面的法线方向
var reflectedDirection = Vector3.Reflect(ray.direction, normal); // 计算反射后的方向向量
var reflectedRay = new Ray((Vector3)rightHitPos, reflectedDirection); // 创建反射后的射线
result.Add((Vector3)rightHitPos); // 添加碰撞点到路径点
result.Add((Vector3)rightHitPos + reflectedDirection); // 添加反射点到路径点
ray = reflectedRay; // 更新射线为反射后的射线

在循环中添加以上代码,可以计算出所有碰撞点和反射点,并将其添加到路径点中

Unity 给定一个ray和一个线段已知该ray和这个线段一定可以发生碰撞如何求在碰撞点发生了反射之后的新射线?给定代码 summary 获得绘制反射指示线的所有路径点 summary private ListVector3 GetRenderPoints var result = new List

原文地址: https://www.cveoy.top/t/topic/iZCO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录