如何在 love2d 中随机绘制物体
2020-10-17 6:53:37
收藏:0
阅读:139
评论:2
我正在尝试使用 love2d 创建打砖块游戏,但问题是每当我使用 **math.random()**来生成随机砖块时,love2d 应用程序会多次运行它,导致砖块不断移动。
编辑:所以我想在特定的列中生成砖块,但行应该是随机选择的。我的基本想法是,如果 math.random(2) == 1 则使用 for 循环来绘制砖块,但问题是它每一秒都得更新/绘制一次,而砖块不断闪烁/移动。我只想随机(仅随机选择 y 坐标,我的 x 坐标是固定的)在执行代码时绘制它一次,但它总是在闪烁。
我面临的问题- https://youtu.be/AJB5vH7yfHc
我的代码
for y = 0, VIRTUAL_HEIGHT- 4, 10 do
if math.random(2) == 1 then
love.graphics.rectangle('line', VIRTUAL_WIDTH - 10, y, 5, 10)
end
end
点赞
用户3342050
好的,编辑了一下问题,这听起来更符合你的意思。只需去掉那个 #column循环,并将其设置为在最后一列创建单元格。
love.load()
--VIRTUAL_WIDTH, VIRTUAL_HEIGHT = love .graphics .getDimensions()
block_pos = {} -- 存储块位置的表
rows, columns = 30, 20 -- 你决定有多少
chance_of_block = 33 -- 放置块的几率%
block_width = math .floor( VIRTUAL_WIDTH /columns )
block_height = math .floor( VIRTUAL_HEIGHT /rows )
col = columns -1 -- 不要循环遍历列,只需使用最后一列
for row = 0, rows -1 do
if love .math .random() *100 <= chance_of_block then
local xpos = col *block_width
local ypos = row *block_height
block_pos[ #block_pos +1 ] = { x = xpos, y = ypos }
end -- rand
end -- #columns
r, g, b = 0.5, 0.5, 0.0
love .graphics .setColor( r, g, b )
love.draw()
for b = 1, #block_pos do
local block = block_pos[b]
love .graphics .rectangle( 'line', block.x, block.y, block_width, block_height )
end -- #block_pos
2020-10-17 07:14:17
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

在love.load()中生成方块位置
--VIRTUAL_WIDTH, VIRTUAL_HEIGHT = love .graphics .getDimensions( ) block_pos = {} -- 存储方块位置的表格 rows, columns = 5, 8 -- 你可以决定行与列的数量,从0开始 chance_of_block = 75 -- 放置方块的概率 block_width = math .floor( VIRTUAL_WIDTH /columns ) block_height = math .floor( VIRTUAL_HEIGHT /rows ) for row = 0, rows -1 do for col = 0, columns -1 do if love .math .random() *100 <= chance_of_block then local xpos = col *block_width local ypos = row *block_height local red = love .math .random() local green = love .math .random() local blue = love .math .random() block_pos[ #block_pos +1 ] = { x = xpos, y = ypos, r = red, g = green, b = blue } end -- rand end -- #columns end -- #rows(编辑:注意行和列应该从0索引开始,这样它们才能在屏幕上对齐)
然后使用love.draw()绘制它们
for b = 1, #block_pos do local block = block_pos[b] love .graphics .setColor( block.r, block.g, block.b ) love .graphics .rectangle( 'fill', block.x, block.y, block_width, block_height ) end -- #block_pos