2017-09-15 16 views
0

私は2つのゾンビオブジェクトを持っています.1つは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 sおよび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 

しかし、どのように、私は理想的に、1つの関数にそれらの両方を描くのですか?

答えて

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 

そして、あなたのドロー機能は、次のようになります。

for i, z in ipairs(zombies) do 
    love.graphics.draw(z.sprite, z.x, z.y, ...) 
end 
関連する問題