在做一个光线反射的游戏,目前查到的方法是用Box2D引擎的RayCast()方法来实现的,大致如以下代码:
for (int i = 0; i < 10; i++)
{
auto p2 = p + b2Vec2(a.x * 1000, a.y * 1000);
RaysCastCallback callback;
_world->RayCast(&callback, p, p2);
g->drawSegment(Vec2(p.x*PTM_RATIO, p.y*PTM_RATIO), Vec2(callback.point.x*PTM_RATIO, callback.point.y*PTM_RATIO), 0.2f, Color4F(1, 1, 1, 1));
p = callback.point;
a = callback.normal;
b2Vec2 remainingRay = (p2 - p);
b2Vec2 pro = b2Dot(remainingRay, a) * a;
a = p2 - 2 * pro;
}
但是这样刚体的每个面都会反射……
如果要实现特定的面能反射,那应该怎么实现……
(新手)