2013-07-21 3 views
2

Возможно ли смоделировать свечу, например, в cocos2d. Таким образом, сцена будет черной, а затем, когда появится свеча, она будет освежать комнату реалистичным способом.Освещение A Room Cocos2d

Если возможно, как бы достичь этого эффекта? Любые переадресации, руководство приветствуются.

Спасибо.

Обратите внимание, что мне не нужны алгоритмы отражения света, поскольку это только для простого использования. Мне просто нужно это для игры, где жизнь игроков - это способность видеть комнату.

ответ

1

Вы должны проверить raycasting. Если вы настроили Cocos2d для использования Box2d, вы можете использовать метод raycasting Box2d для достижения этого эффекта. Вы можете сделать стены в своей комнате box2d жесткими телами, а затем raycast от вашего источника свечи до нескольких точек на круге вокруг него. Если raycast пересекает стену, отметьте местоположение пересечения. Затем в конце вы можете заполнить область светом, который находится внутри многоугольника, созданного всеми точками пересечения raycast.

+0

Знаете ли вы, можете ли вы получить расстояние до пересечения рейкастов? Потому что это понадобится для имитации света. Следовательно, объекты далеко не должны освещаться настолько, насколько те, которые близки. – chrs

+0

@Chrene Вы можете прочитать хороший учебник по расовому делу Box2d на [raywendelich.com] (http://www.raywenderlich.com/4653/intermediate-box2d-physics-forces-ray-casts-and-sensors). В обратном вызове raycast хранится несколько фрагментов информации в методе ReportFixture, включая точку ** пересечения ** b2Vec2. Просто, если вы знаете точку происхождения raycast, вы можете легко рассчитать расстояние между источником и этой точкой пересечения. – Benolds