Fizz X
Fizz is a lightweight collision library in Lua. It's designed specifically for old-school platformers and overhead action games. Fizz is licensed under the MIT License.
Features
- Three different shape types: circles, rectangles and line segments.
- Line segments can be used for making slopes and possibly "one-sided" platforms. They handle collision differently based on direction and "push" other intersecting shapes at 90 degrees counter-clockwise of the segment slope.
- Static shapes - static shapes are immobile and do not respond to collisions or gravity.
- Kinematic shapes - kinematic shapes do not respond to collisions or gravity, but can be moved by manually changing their velocity. Kinematic shapes can be used to simulate moving platforms and doors.
- Dynamic shapes respond to collisions and gravity. Dynamic shapes can be used to simulate the moving objects in your game.
- Space partitioning to reduce the number of collision tests. It can be disabled, although this is not recommended especially if your simulation contains many dynamic shapes.
Example
fizz = require("fizzx")
fizz.setGravity(0, 100)
ball = fizz.addDynamic('circle', 300, 100, 10)
wall = fizz.addStatic('rect', 300, 400, 200, 10)
ball.bounce = 0.5
function love.update(dt)
fizz.update(dt)
end
function love.draw()
love.graphics.circle("fill", ball.x, ball.y, ball.r)
love.graphics.rectangle("fill", wall.x - wall.hw, wall.y - wall.hh, wall.hw*2, wall.hh*2)
end
Links
- Original forum thread: https://love2d.org/forums/viewtopic.php?f=5&t=7844
- Code repository: https://github.com/2dengine/fizzx
- Official documentation: http://2dengine.com/doc/fizzx.html