2016-07-04 4 views
0

내가 뭘 잘못하고 있는지 모르겠다. 나는 player.draw() 함수에서 오류를 얻고있다. 그 이야기가 love.graphics.rectangle() 메소드에 있다는 잘못된 주장. 그것은 v.x가 나쁜 논쟁이라고 말하는 것입니다. 그러나 그것은 효과가 있어야합니다. v.x와 v.y 모두 작동해야합니다. 테이블 또는 배열 내의 요소에 대한 액세스 필드가 올바르므로 누군가 내가 뭘 잘못하고 어떻게 해결할 지 말해 줄 수 있습니까? 많은 감사!love2D 오류 : 잘못된 인수 # 2 'rectangle'(숫자가 예상 됨, nil이 붙음)

require "scripts.player" 

width = love.graphics.getWidth() 

block = {} 
block.width = 60 
block.height = 10 
block.speed = 150 
block.timer = 0 
block.timerLim = math.random(1,2) 
block.spawnX = math.random(0, width - player.width) 

function block.spawn(x,y) 
    table.insert(block, {x = x, y = y}) 
end 

function block.move(dt) 
    for i,v in ipairs(block) do 
     v.y = v.y + block.speed * dt 
    end 
end 

function block.draw() 
    for i,v in ipairs(block) do 
     love.graphics.setColor(255,0,255) 
     love.graphics.rectangle("fill", v.x, v.y, block.width block.height) 
    end 
end 

function block.spawnHandler(dt) 
    block.timer = block.timer + dt 
    if block.timer > block.timerLim then 
     block.spawn(spawnX, -10) 
     block.timer = 0 
     block.timerLim = math.random(1,2) 
     block.spawnX = math.random(0, width - block.width) 
    end 
end 

-- Parent Functions -- 

function DRAW_BLOCK() 
    block.draw() 
end 

function UPDATE_BLOCK(dt) 
    block.move(dt) 
    block.spawnHandler(dt) 
end 

답변

1

기능 block.spawnHandler 당신이 block.spawnX 대신 spawnX 의미 : 여기 내 코드입니다.

spawnX이 존재하지 않으므로 해당 값은 nil입니다.이 값은 스폰 함수로 넘어 가서 x 값으로 설정되어 rectangle으로 바뀌며 잘못된 인수입니다.

당신은 그것에 대해 자세한 내용을보실 수 있습니다 어떻게 다시 당신을 무는 것을 방지하기 위해 : 당신이 존재하지 않는 변수에 대한 접근을하여 '수정'대신 오류를 던질 때까지 한마디로 https://www.lua.org/pil/13.4.1.html

는 루아 정말 이상해 반환 nil, 그리고 약 800 다른 것들. 일단 모든 것을 고치면 이상한 것이고 더 이상 루아가 아닌 것입니다.

+0

와우 효과가 있습니다. 정말 고마워! –