Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua HC:intersectsRay()是如何工作的_Lua_Collision Detection_Love2d - Fatal编程技术网

Lua HC:intersectsRay()是如何工作的

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,

我在为LÖVE做轻音乐。为了使它尽可能快,我使用光源的光线来阻挡光线。这些拦截器由HC多边形形状制成。理论上,我可以在光源周围投下一些光线。如果光线与形状相交,则将交点添加到表格中,如果不相交,则使用圆边。如果一切正常的话,我会得到这样的东西

但是,我得到了这个

我禁用了碰撞检查并得到了一个圆,所以问题纯粹在于HC或我对它的错误使用 下面是代码本身

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
我真的不知道怎么了,所以如果有人能帮助我,我会非常高兴。谢谢