Lua HC:intersectsRay()是如何工作的
我在为LÖVE做轻音乐。为了使它尽可能快,我使用光源的光线来阻挡光线。这些拦截器由HC多边形形状制成。理论上,我可以在光源周围投下一些光线。如果光线与形状相交,则将交点添加到表格中,如果不相交,则使用圆边。如果一切正常的话,我会得到这样的东西 但是,我得到了这个 我禁用了碰撞检查并得到了一个圆,所以问题纯粹在于HC或我对它的错误使用 下面是代码本身Lua HC:intersectsRay()是如何工作的,lua,collision-detection,love2d,Lua,Collision Detection,Love2d,我在为LÖVE做轻音乐。为了使它尽可能快,我使用光源的光线来阻挡光线。这些拦截器由HC多边形形状制成。理论上,我可以在光源周围投下一些光线。如果光线与形状相交,则将交点添加到表格中,如果不相交,则使用圆边。如果一切正常的话,我会得到这样的东西 但是,我得到了这个 我禁用了碰撞检查并得到了一个圆,所以问题纯粹在于HC或我对它的错误使用 下面是代码本身 local PoI = {} for _, source in ipairs(light_sources) do local x, y,
local PoI = {}
for _, source in ipairs(light_sources) do
local x, y, radius = source:GetX(), source:GetY(), source:GetRadius()
for i = 1, 10 do --10 is amount of rays
local a = i/10 * 2 * math.pi
local x1 = radius * math.cos(a) + x --edge of a circle and direction for tracer
local y1 = radius * math.sin(a) + y
local no_intersection = true
for _, blocker in ipairs(blocking_objects) do
local check, intersection = blocker:intersectsRay(x, y, x1, y1)
if check then
local vx,vy = vector.add(x, y, vector.mul(intersection, x1, y1))
table.insert(PoI, vx)
table.insert(PoI, vy)
no_intersection = false
end
end
if no_intersection then --nothing is found, use direction as a PoI
table.insert(PoI, x1)
table.insert(PoI, y1)
end
end
end
我真的不知道怎么了,所以如果有人能帮助我,我会非常高兴。谢谢