Physics Dasar dengan love.physics/Box2D
Penjelasan
LÖVE2D menyertakan Box2D lewat modul `love.physics`, sebuah engine fisika penuh yang menangani gravitasi, tumbukan, dan gaya secara otomatis — jauh lebih kompleks (dan realistis) dibanding AABB manual. Tiga konsep inti: `World` (ruang simulasi dengan gravitasi), `Body` (posisi dan pergerakan objek), dan `Shape`+`Fixture` (bentuk fisik serta properti seperti densitas dan gesekan). Box2D cocok dipakai kalau game butuh interaksi fisik yang kompleks (objek jatuh saling bertumpuk, ragdoll, pantulan realistis) — untuk kebutuhan sederhana seperti platformer dasar, AABB manual biasanya lebih ringan dan lebih mudah dikontrol.
Contoh Konsep
local world
local bola
function love.load()
love.physics.setMeter(64)
world = love.physics.newWorld(0, 9.81 * 64, true)
bola = {}
bola.body = love.physics.newBody(world, 400, 100, "dynamic")
bola.shape = love.physics.newCircleShape(20)
bola.fixture = love.physics.newFixture(bola.body, bola.shape, 1)
bola.fixture:setRestitution(0.8) -- daya pantul
end
function love.update(dt)
world:update(dt)
end
function love.draw()
love.graphics.circle("fill", bola.body:getX(), bola.body:getY(), 20)
end
Praktikum
Buat sebuah world dengan gravitasi, satu body dinamis berbentuk kotak yang jatuh, dan satu body statis sebagai lantai agar kotak berhenti jatuh.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Body statis (seperti lantai) tidak perlu masuk `world:update` secara khusus dan tidak terpengaruh gravitasi — cukup body "dynamic" yang posisinya berubah otomatis oleh simulasi.