标签: love2d

我可以编辑和销售我的Löve2D游戏吗?

我有两个关于Love2D的问题.

我可以卖掉我在Love2D中制作的东西吗?我可以将我制作的任何内容编译成.exe文件吗?

lua love2d

17
推荐指数
3
解决办法
9594
查看次数

哪个Haskell GLSL绑定支持多个帧缓冲区?

我正在尝试使用带有Haskell的 GLSL实现两次高斯模糊,我不知道应该使用哪个库来获得类似于下面提供的Löve2DLua代码的结果:

Löve2d代码(main.lua)

LG = love.graphics

function love.load()
    time = love.timer.getTime()
    img = LG.newImage("moonbow.jpg")
    blur_pass = LG.newShader("pass.gs")
    horizontal_canvas = LG.newCanvas(img:getDimensions())
    vertical_canvas = LG.newCanvas(img:getDimensions())
    LG.setCanvas(horizontal_canvas)
    LG.setShader(blur_pass)
    blur_pass:send("horizontal", true)
    blur_pass:send("blurSize", 1 / img:getWidth())
    LG.draw(img)
    LG.setCanvas(vertical_canvas)
    blur_pass:send("horizontal", false)
    blur_pass:send("blurSize", 1 / img:getHeight())
    LG.draw(horizontal_canvas)
    LG.setShader()
    LG.setCanvas()
    time = love.timer.getTime() - time
end

function love.draw()
    LG.draw(vertical_canvas)
    LG.print("Time: " .. time * 10 .. "ms", 12, 12)
end
Run Code Online (Sandbox Code Playgroud)

Löve2dGLSL着色器(pass.gs文件)

float gauss[51] = float[](0.9637, 0.9606, 0.9572, 0.9533, 0.9489, 0.9438, 0.9379, 0.9311, 0.9231, …
Run Code Online (Sandbox Code Playgroud)

opengl lua haskell glsl love2d

12
推荐指数
0
解决办法
203
查看次数

像素碰撞跟踪

我有一个角色,比如20 x 10像素大,我有一个基于像素的碰撞图(想想蠕虫).

给定速度大于每帧1个像素的角色追踪碰撞的最佳方法是什么.有没有比沿速度矢量迭代每个像素更好的解决方案?

我在Lua(Love 2D)中这样做,但通用的解决方案是理想的.

lua pixel collision love2d

8
推荐指数
1
解决办法
1401
查看次数

如何在LOVE 2D中创建步行动画

所以我想知道如何根据我按下/按下的键改变我创建的角色图像?

当按下"d"(或任何一个按键)时,我最终会有一个行走动画,但是当刚刚按下"d"键等时它就会静止.所有图像都已经创建.

我试过这个,但没有成功:

function love.load()

    if love.keyboard.isDown("a") then
        hero = love.graphics.newImage("/hero/11.png")
    elseif love.keyboard.isDown("d") then
        hero = love.graphics.newImage("/hero/5.png")
    elseif love.keyboard.isDown("s") then
        hero = love.graphics.newImage("/hero/fstand.png")
    elseif love.keyboard.isDown("w") then
        hero = love.graphics.newImage("/hero/1.png")
    end

function love.draw()

    love.graphics.draw(background)
    love.graphics.draw(hero, x, y)

end
Run Code Online (Sandbox Code Playgroud)

lua animation love2d

8
推荐指数
1
解决办法
1万
查看次数

是否可以在包含对C函数的引用的lua字节码字符串上调用loadstring?

我们正在使用Love2d Lua游戏引擎向Lua公开图形API.我们正在尝试序列化一个包含游戏世界所有保存游戏数据的巨型哈希表.这个哈希包括一些函数,其中一些函数调用Love2d C函数.

为了序列化散列中的函数,我们使用string.dump,并使用loadstring将它们加载回来.这适用于纯Lua函数,但是当我们尝试序列化然后加载回调用包装的C函数(如Love2d api中的函数)的函数时,loadstring返回nil.

考虑以下简单程序,通过Love2d的图形引擎将"hello,world"绘制到屏幕上:

function love.load()
    draw = function()
        love.graphics.print('hello, world', 10, 10)
    end
end
function love.draw()
    draw()
end
Run Code Online (Sandbox Code Playgroud)

我们希望能够做到这一点:

function love.load()
    draw_before_serialize = function()
        love.graphics.print('hello, world', 10, 10)
    end

    out = io.open("serialized.lua", "wb")
    out:write('draw = load([[' .. string.dump(draw_before_serialize) .. ']])')
    out:close()

    require "serialized"
end
function love.draw()
    draw()
end
Run Code Online (Sandbox Code Playgroud)

这样做会写入磁盘上的Lua文件,其中包含混合的非编译Lua和Lua字节码,如下所示:

draw = load([[^[LJ^A^@      
       @main.lua2^@^@^B^@^B^@^D^E^B^B4^@^@^@%^A^A^@>^@^B^AG^@^A^@^Qhello, world 
       print^A^A^A^B^@^@]])
Run Code Online (Sandbox Code Playgroud)

此方法适用于不调用C模块的Lua函数.我们认为这是问题,因为这个例子确实有效:

function love.load()
    draw_before_serialize = function()
        print('hello, world')
    end

    out = io.open("serialized.lua", "wb")
    out:write('draw = load([[' .. string.dump(draw_before_serialize) .. ']])')
    out:close()

    require …
Run Code Online (Sandbox Code Playgroud)

lua serialization binary-data love2d

7
推荐指数
1
解决办法
2490
查看次数

如何使用 VSCode 调试 Lua Love2D?

我正在寻找有关如何在Visual Studio Code中调试 Lua Code 的建议。我正在使用Love2D,所以我知道我需要以某种方式嵌入我的调试代码,因为它不是独立的 Lua,但是我更喜欢对我的源代码进行最小程度的增强。

目标:在 VSCode 中使用断点、捕获错误和变量检查进行定期调试。我不介意使用哪个扩展,只要我可以轻松调试我的代码即可。

到目前为止我尝试过的:

  1. Lua 调试器:它以某种方式工作,它遇到了断点,但只有在调用时debuggee.poll()我无法介入或进一步检查。

  2. LRDB:看起来很有希望,但不知何故游戏无法开始。它只是挂起,直到我用任务管理器杀死它。

LRDB 的代码(不包括通用更新/绘制函数,因为它们仅用于测试断点):


local lrdb = require "lrdb_server"
local db_port = 21110

function love.run()
    lrdb.activate(db_port)

    if love.load then love.load(love.arg.parseGameArguments(arg), arg) end
 
    -- We don't want the first frame's dt to include time taken by love.load.
    if love.timer then love.timer.step() end
 
    local dt = 0
    lrdb.deactivate()
    -- Main loop time.
    return function()
        lrdb.activate(db_port)
        -- Process events.
        if love.event then
            love.event.pump() …
Run Code Online (Sandbox Code Playgroud)

lua love2d visual-studio-code

7
推荐指数
1
解决办法
3716
查看次数

Love2d和径向引力

我发现了一篇关于向box2d添加径向引力的有趣文章.

http://www.vellios.com/2010/06/06/box2d-and-radial-gravity-code/

虽然我需要计算距离平方和标准化距离,但要将其移植到lua.

Love2d似乎没有提取适当的向量的功能,这是一种耻辱.

除非我的数学缺乏,有人可以帮助我.

我总是可以切换到box2d,但love2d似乎是一个简洁的解决方案.

lua gravity love2d

6
推荐指数
1
解决办法
1200
查看次数

我可以保存到Lua和LÖVE的特定文件夹中吗?

在LÖVE的支持下学习如何创建Lua文件输出代码的同时,我一直讨厌LÖVE文件系统处理程序始终在C:/ Documents and Settings /中保存特定文件.

如何创建将文件保存到我想要定义的特定文件夹中的代码(并且可能在运行应用程序时更改)?

directory file-io lua love2d

6
推荐指数
1
解决办法
638
查看次数

Lua创建类出错

我正在尝试为我的游戏创建一个类,但出现此错误(如 love2d 中所示):尝试索引 upvalue 'World'(布尔值)

这是我制作的世界文件:

local World = {}
World.__index = World

function World:new(meter, gravity)
    setmetatable({}, World)

    -- Set physics parameters
    love.physics.setMeter(meter)
    self.world = love.physics.newWorld(0, gravity*meter, true)

    -- Load background
    self.background = love.graphics.newImage("imgs/background.png")

    return self
end

function World:update(dt)

end

function World:draw()
    love.graphics.draw(self.background)
end

function World:destroy()
    -- Destroy the world
    self.world:destroy()
end
Run Code Online (Sandbox Code Playgroud)

在这里我称这个世界为:

local World = require("world")

function love.load()
    -- Build the world
    world = World:new(32, 9.81)
end
Run Code Online (Sandbox Code Playgroud)

怎么了?不管怎样,用 Lua 上课的最好方法是什么?

lua class love2d

5
推荐指数
1
解决办法
113
查看次数

如何在 Lua 中显示调试信息或 console.log 等效项

我正在使用 Lua 和 LOVE2D 创建许多游戏,但每当我实现一个新功能并想要测试它,或者只是想知道 Lua 中变量的值时,我要么将其显示在游戏屏幕上,要么只是希望它作品。

现在我的问题是......有没有办法在终端或其他地方显示一些信息,例如变量值或其他内容?就像console.log在 javascript 中一样,它在浏览器的 javascript 控制台中显示一些内容。那么,Lua 有没有办法做到这一点?使用LOVE2D?

我使用的是 Mac,因此有terminal命令提示符,但没有命令提示符。有没有办法在那里显示一些内容?其他地方也可以,我只需要看看这些值是否符合预期。

debugging lua love2d console.log

5
推荐指数
1
解决办法
2万
查看次数