我想知道如何使用spritesheet显示分数。我的游戏是关于点数收集,我想让这个能量棒填满。当能量棒充满时,会弹出一个空的,完整的一个将消失以用于最终游戏目的。我的spritesheet由70张图片组成。
我可以使用if语句来构建它,但必须有更好的方法。否则它看起来像这样
if score == 0 then
display.newImage("00.png", x, y)
end
if score == 1 then
display.newImage("01.png", x, y)
end
if score == 2 then
display.newImage("02.png", x, y)
end
if score == 3 then
display.newImage("03.png", x, y)
end
...
if score == 70 then
display.newImage("70.png", x, y)
end
当分数为71时,显示" 01.png"
答案 0 :(得分:0)
由于您使用的得分值和文件名之间似乎存在直接关系(意味着00 - > '00 .png',1 - > '01 .png',... 70 - >' 70.png'等),并且在得分= 70之后,整个序列重复,这样做的一种方式是首先,摆脱70的乘法,然后在前面加上0来获得单位数分数。这是一个能够做到这一点的功能:
-- Given a score, returns correct picture name
-- eg. for score = 01 returns 01.png
local function getFilenameFromScore(score)
while true do
if score < 71 then break end
-- get rid of multiplies of 70 by reducing score by 70
-- until it's 0-70
score = score - 70
end
-- if score is between 0 and 9 (one digit, so length is 1)
-- add 0 in front
-- this could also be done with modulo %
if string.len(score) == 1 then
score = '0' .. score
end
-- append .png and return
return score .. '.png'
end
之后,显示得分如下:
local scorePicture = getFilenameFromScore(score)
display.newImage(scorePicture, x, y)
此处,scorePicture将以您描述的方式取决于得分值。