标签: love2d

使用 Lua 表作为二维数组

我是一个 Lua 初学者,我尝试使用 Love2D 库在 Lua 中创建一些东西。

在加载函数中,我创建一个表并上传其元素(数字),以便稍后将其用作多维数组。

function love.load()

    Maximum_X = 32      
    Maximum_Y = 16

    Start_X = 64
    Start_Y = 32

    MapTable = {}                           -- empty table

    for i=1,Maximum_X*Maximum_Y do          -- uploading table
        table.insert(MapTable, 2)
  end


end
Run Code Online (Sandbox Code Playgroud)

然后我创建一个函数来接受表中的更改。因为我只是在试验表格,所以只有一个值发生了变化。至少,我想。

function KatamoriGen()

    MapTable[4] = 3     

end


function love.update(dt)

KatamoriGen()

end
Run Code Online (Sandbox Code Playgroud)

之后,我以 32 列 16 行的矩阵形式打印表格的元素。我在这里看到,不仅第一行的第四个元素发生了变化,而且第二行的第二个元素和第四行的第一个元素也变成了3。

显然这意味着这两者Table[posX*posY]都不起作用,因为乘法的结果是一个类似的数字4,并且该操作会更改其中的每个元素

X coordinate + Y coordinate = posX*posY

是真的。在示例代码中,该等式的右边是 4。

一个小问题:为什么会发生这种情况?

主要问题是:如何MapTable准确识别元素?如何为 Lua 表实现 X 和 Y 维度?将它们用作二维数组?也许是一桌一桌?

编辑:这是绘图功能:

function …
Run Code Online (Sandbox Code Playgroud)

arrays lua love2d lua-table

3
推荐指数
1
解决办法
7662
查看次数

“镜子”上的二维线反射

所以我已经断断续续地工作了一个星期,谷歌搜索等等,我还没有找到如何做到这一点。

我有一张“射线”表和一张“线”表,我希望这些线充当镜子并在光线碰到一条线时反射光线。想象一下激光从镜子上反弹,那种反射。我已经让相交检测工作了,但我不知道如何正确计算反射角并将光线延伸到那个方向。

代码:

--the table rays is a table of tables, and each table inside is formatted as such:
--rays[x] = {100,200,150,600,200,400}, where (100,200) are ordered pairs, etc.
--The table lines simply contains values for x1,y1,x2,y2

for i,ray in ipairs(rays) do
        for j,line in ipairs(lines) do
            if line.x2 ~= nil and #ray>3 then 
                print(line.x2..' '..line.y2)
                iX, iY = intersect.test(ray[#ray-3],ray[#ray-2],
                         ray[#ray-1],ray[#ray],line.x1,line.y1,line.x2,line.y2)

--The above code takes each ray and 
--sees if it intersects with a line, with the intersect.test function
--Then if …
Run Code Online (Sandbox Code Playgroud)

math lua love2d

3
推荐指数
1
解决办法
1854
查看次数

lua小数值突破-0.1到0.1(独家)

我有一个Lua for循环,它以-1的增量从-1到1迭代数字,并且在-0.1到0.1的范围内生成与6.6613381477509e-016一样糟糕的数字(不包括)

我在LOVE引擎中使用Lua(v 0.9.2),用C++编写

我宁愿解决这个问题而不仅仅是接收一个解释的信息转储,但我宁愿这也不是什么.

(我也理解浮点数的一般原因是不准确的,因此可能会遗漏解释)

lua floating-accuracy love2d

3
推荐指数
1
解决办法
116
查看次数

Lua“类”的两个实例是同一个“对象”

我正在使用 Love2d 和 Lua,看看我的自定义 Lua“类”:

-- Tile.lua
local Tile = { img = nil, tileType = 0, x = 0, y = 0 }

function Tile:new (img, tileType, x, y)
    o = {}
    setmetatable(o, self)   
    self.__index = self
    self.img = img or nil
    self.tileType = tileType or 0
    self.x = x or 0
    self.y = y or 0
    return o
end

function Tile:getX ()
    return self.x
end

return Tile
Run Code Online (Sandbox Code Playgroud)

并使用该类:

-- main.lua
Tile = require("src/Tile")

function love.load()
    myGrass = Tile:new(nil, …
Run Code Online (Sandbox Code Playgroud)

lua love2d

3
推荐指数
1
解决办法
249
查看次数

如何在 Lua (Love2D) 库中定义类?

我尝试在名为“Point”的“basic.lua”文件上定义我的类,并尝试在文件“main.lua”上实现它,但我不断收到此错误:

Error

Syntax error: basic.lua:3: '(' expected near 'Point'



Traceback

[C]: at 0x7ffc269728f0
[C]: in function 'require'
main.lua:3: in function 'load'
[C]: in function 'xpcall'
[C]: in function 'xpcall'
Run Code Online (Sandbox Code Playgroud)

这是我的“basic.lua”代码

return {

  function Point(self, x, y)
    local Point = {

      x = x;
      y = y;

      AsString = function(self)
          print("{x: " + self.x + ", y: " + self.y + "}");
      end;
      
    }
    return Point;
  end;

};
Run Code Online (Sandbox Code Playgroud)

这是我的“main.lua”代码

function love.load()

    local Basic = require("basic");

    PlayerAcceleration = Basic.Point:new{1, 2};
    PlayerVelocity = …
Run Code Online (Sandbox Code Playgroud)

lua module class love2d

3
推荐指数
1
解决办法
288
查看次数

Love2d旋转图像

我想在Love2D中旋转图像.我在love2d.org上找到了一个文档:https://love2d.org/wiki/love.graphics.rotate 但是当我尝试加载图像时,我似乎无法使它工作.继承我的代码:

local angle = 0

function love.load()
    g1 = love.graphics.newImage("1.png") 
end

function love.draw()
    width = 100
    height = 100
    love.graphics.translate(width/2, height/2)
    love.graphics.rotate(angle)
    love.graphics.translate(-width/2, -height/2)
    love.graphics.draw(g1, width, height)
end

function love.update(dt)
    love.timer.sleep(10)
    angle = angle + dt * math.pi/2
    angle = angle % (2*math.pi)
end
Run Code Online (Sandbox Code Playgroud)

有人能给我看一个在love2d中旋转图像的简单例子吗?

lua image rotation love2d

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

Lua & Love2D - 尝试在类中使用类

我正在使用 Love2D 游戏引擎用 Lua 编写一个程序。我正在尝试在类中使用类,据我所知,Lua 并不直接支持类(在我看来,如果想与主要语言竞争,这是一个疏忽)。如果我只使用我的一个类,那么一切都会正常工作,但是当我开始嵌套类时,我会遇到问题。我有 3 个文件,其中包含我的代码和我收到的错误,详细信息如下。

我收到以下信息:

Error
menu.lua:8: attempt to index field 'newBox' (a nil value)
Traceback
menu.lua:8: in function 'create'
main.lua:6: in function 'load'
[C]: in function 'xpcall'
Run Code Online (Sandbox Code Playgroud)

代码在“main.lua”中

require "menu"
require "box"

function love.load()

    newMenu = Menu:create()

end

function love.update(delta)



end

function love.draw()

    newMenu:draw()

end
Run Code Online (Sandbox Code Playgroud)

“menu.lua”中的代码

Menu = {}
Menu.__index = Menu

function Menu:create()
    local menu = {}
    setmetatable(menu, Menu)

    menu.newBox:create(100, 100, 100, 50)

    return menu
end

function Menu:draw()
    self.newBox:draw()
end
Run Code Online (Sandbox Code Playgroud)

“box.lua”中的代码

Box = {} …
Run Code Online (Sandbox Code Playgroud)

lua love2d

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

Lua获得最大数量

我遇到了获取数组最大属性数的问题

-- Getting Maximum number of full grids inside Row
maxRow = math.max(checkerRow[1],checkerRow[2],checkerRow[3],checkerRow[4],checkerRow[5],
                    checkerRow[6],checkerRow[7],checkerRow[8],checkerRow[9],checkerRow[10],
                    checkerRow[11],checkerRow[12],checkerRow[13],checkerRow[14],checkerRow[15],
                    checkerRow[16],checkerRow[17],checkerRow[18],checkerRow[19],checkerRow[20])

print("Max Row : "..maxRow)
Run Code Online (Sandbox Code Playgroud)

所以它打印出maxRow里面的值,我需要一些实际上可以给我行数的东西,比如checkerRow [6]是最大数,那么我需要maxRow等于6.

如果你觉得这个问题很愚蠢,我很抱歉,我是Lua的新手.

lua love2d

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

使用字段名称定义函数时出错(`'('应在 '['` 附近)

我在用lua编译时出错:

local action = {}
action["moving"] = {}
action["zooming"] = {}
action["moving"].state = false
action["zooming"].state = false

action.list = {"moving", "zooming"}

function action["moving"].f()
  if CanAction("moving") and (love.keyboard.isDown("left") or love.keyboard.isDown("right") or love.mouse.isDown("l")) then
    if action["moving"].state == false then
      action["moving"].x, action["moving"].y = camera:mousePosition()
      action["moving"].state = true
    end
    if action["moving"].state then
      if love.mouse.isDown("l") then
        camera:setPosition(-love.mouse.getX()*camera.scaleX + action["moving"].x, -love.mouse.getY()* camera.scaleY + action["moving"].y)
      elseif love.keyboard.isDown("left") then
        camera:move(-10*camera.scaleX, 0)
      elseif love.keyboard.isDown("right") then
        camera:move(10*camera.scaleX, 0)
      end
    end
  else
    ResetAction("moving")
  end
end 
Run Code Online (Sandbox Code Playgroud)

当我声明函数“function action[”moving”].f()”时,错误是关于那一行的,也许是因为我使用了这样的表,谢谢你的帮助。

lua love2d

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

Getting multiple values from a function without creating a variables in LUA

Is there any way to get several values from a function without creating variables for it?

local major, minor, revision, codename = love.getVersion() -- Get current LÖVE version as a string.
Run Code Online (Sandbox Code Playgroud)

So instead of making four different variables (or array) we'll use something that will just return a value you need.

get( love.getVersion(), 0 ) -- Will return the first value (major).
Run Code Online (Sandbox Code Playgroud)

I read somewhere that I can use square brackets and triedlove.getVersion()[1] but it says "Attempt to index …

lua love2d

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

标签 统计

love2d ×10

lua ×10

arrays ×1

class ×1

floating-accuracy ×1

image ×1

lua-table ×1

math ×1

module ×1

rotation ×1