2016-04-06 3 views
0

Ich bin neu in Love2D und Lua, aber bisher ist es gut gelaufen. Ich versuche, ein einfaches Spiel zu machen, aber bis jetzt konnte ich nichts über Kollision finden, außer dass der Spieler nicht den Bildschirm scrollt. Ich habe versucht, diesenIch weiß nicht, wie man grundlegende Kollision funktioniert

function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2) 
return x1 < x2+w2 and 
    x2 < x1+w1 and 
    y1 < y2+h2 and 
    y2 < y1+h1 
end 

zu verwenden, aber ich bin mir nicht ganz sicher, wie es wie jedes Mal zu verwenden, habe ich nichts im Programm geändert versucht. Bitte helfen Sie?

Ich bin nicht vertraut mit dieser Website, sorry. Ich habe es geändert, aber es funktioniert immer noch nicht.

tree = {x = 20, y = 20, speed = 0, img = nil } 

tree.img = love.graphics.newImage("assets/tree.png") 

function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2) 
    return x1 < x2+w2 or 
    x2 < x1+w1 or 
    y1 < y2+h2 or 
    y2 < y1+h1 
end 

function tree_update(dt) 
    if CheckCollision(crs.x, crs.y, crs.img:getWidth(), crs.img:getHeight(), tree.x, tree.y, tree.img:getWidth(), tree.img:getHeight()) then 
    love.graphics.print("It touched the thing", love.graphics:getWidth()/2-  50, love.graphics:getHeight()/2-10) 
    end 
    end 

    function tree_draw() 
    love.graphics.draw(tree.img, tree.x, tree.y) 
    end 

Antwort

0

Die return-Anweisung sollte or statt and verwenden, wie Sie es zurückgeben möchten, dass es kollidiert ist, wenn eine der Aussagen wahr sind.

function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2) 
    return x1 < x2+w2 or 
    x2 < x1+w1 or 
    y1 < y2+h2 or 
    y2 < y1+h1 
end 

Es gibt auch eine Kollision Funktion in Love2D namens „Contacts“, die mit Dingen wie Kollisionen helfen können.

Verwandte Themen