2017-09-15 3 views
0

두 개의 좀비 개체가 있습니다. 하나는 Grunt이고 다른 하나는 Runner입니다. 여러 유형의 테이블 그리기

Grunt.lua 파일 :

function InitGrunt() 
    grunt = {} 
    grunt.x = 0 
    grunt.y = 0 
    grunt.speed = 120 
    grunt.hitBox = (sprites.grunt:getHeight() + sprites.grunt:getWidth())/2 
    grunt.hit = false 

    gruntDefCD = 2 
    gruntCD = gruntDefCD 
    gruntMinCD = 0.4 
    gruntTimer = gruntCD 
    gruntTimerDecr = 0.8 
end 

function SpawnGrunt() 
    local side = math.random(1, 4) 

    --randomize spawn position 

    table.insert(zombies, grunt) 
end 

Runner.lua :

function InitRunner() 
    runner = {} 
    runner.x = 0 
    runner.y = 0 
    runner.speed = 240 
    runner.hitBox = (sprites.runner:getWidth() + sprites.runner:getHeight())/2 
    runner.hit = false 

    runnerDefCD = 4 
    runnerCD = runnerDefCD 
    runnerMinCD = 2 
    runnerTimer = runnerCD 
    runnerTimerDecr = 0.95 
end 

function SpawnRunner() 
     local side = math.random(1, 4) 

     --randomize spawn position 

     table.insert(zombies, runner) 
end 

그래서 zombie 테이블 grunt들과 runner들 것이다. Draw()에 둘 다 어떻게 인쇄합니까?

내가 하나를 그릴 수 있습니다 :

function DrawGrunts() 
    for i, z in ipairs(zombies) do 
    love.graphics.draw(sprites.grunt, z.x, z.y, PlayerZombieAngle(z), nil, nil, sprites.grunt:getWidth()/2, sprites.grunt:getHeight()/2) 
    end 
end 

하지만 어떻게 내가 이상적으로, 하나의 함수에 둘을 그릴 수 있습니까?

답변

4

자신의 스프라이트 개체를 다른 개체에게 포인터를 보내기

runner = { } 
runner.x = 0 
runner.y = 0 
runner.sprite = sprites.runner 
-- Rest of runner definition 

grunt = { } 
grunt.x = 0 
grunt.y = 0 
grunt.sprite = sprites.grunt 
-- Rest of grunt definition 

그리고 당신의 draw 함수가된다 :

for i, z in ipairs(zombies) do 
    love.graphics.draw(z.sprite, z.x, z.y, ...) 
end