我有两个关于Love2D的问题.
我可以卖掉我在Love2D中制作的东西吗?我可以将我制作的任何内容编译成.exe文件吗?
我正在尝试使用带有Haskell的 GLSL实现两次高斯模糊,我不知道应该使用哪个库来获得类似于下面提供的Löve2DLua代码的结果:
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)
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) 我有一个角色,比如20 x 10像素大,我有一个基于像素的碰撞图(想想蠕虫).
给定速度大于每帧1个像素的角色追踪碰撞的最佳方法是什么.有没有比沿速度矢量迭代每个像素更好的解决方案?
我在Lua(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) 我们正在使用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) 我正在寻找有关如何在Visual Studio Code中调试 Lua Code 的建议。我正在使用Love2D,所以我知道我需要以某种方式嵌入我的调试代码,因为它不是独立的 Lua,但是我更喜欢对我的源代码进行最小程度的增强。
目标:在 VSCode 中使用断点、捕获错误和变量检查进行定期调试。我不介意使用哪个扩展,只要我可以轻松调试我的代码即可。
到目前为止我尝试过的:
Lua 调试器:它以某种方式工作,它遇到了断点,但只有在调用时debuggee.poll()我无法介入或进一步检查。
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) 我发现了一篇关于向box2d添加径向引力的有趣文章.
http://www.vellios.com/2010/06/06/box2d-and-radial-gravity-code/
虽然我需要计算距离平方和标准化距离,但要将其移植到lua.
Love2d似乎没有提取适当的向量的功能,这是一种耻辱.
除非我的数学缺乏,有人可以帮助我.
我总是可以切换到box2d,但love2d似乎是一个简洁的解决方案.
在LÖVE的支持下学习如何创建Lua文件输出代码的同时,我一直讨厌LÖVE文件系统处理程序始终在C:/ Documents and Settings /中保存特定文件.
如何创建将文件保存到我想要定义的特定文件夹中的代码(并且可能在运行应用程序时更改)?
我正在尝试为我的游戏创建一个类,但出现此错误(如 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 和 LOVE2D 创建许多游戏,但每当我实现一个新功能并想要测试它,或者只是想知道 Lua 中变量的值时,我要么将其显示在游戏屏幕上,要么只是希望它作品。
现在我的问题是......有没有办法在终端或其他地方显示一些信息,例如变量值或其他内容?就像console.log在 javascript 中一样,它在浏览器的 javascript 控制台中显示一些内容。那么,Lua 有没有办法做到这一点?使用LOVE2D?
我使用的是 Mac,因此有terminal命令提示符,但没有命令提示符。有没有办法在那里显示一些内容?其他地方也可以,我只需要看看这些值是否符合预期。