Study
LÖVE2D

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.

Editor Latihan

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.