
Security News
PEP 810 Proposes Explicit Lazy Imports for Python 3.15
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
collide-2d-aabb-tilemap
Advanced tools
Determines whether a moving axis-aligned bounding box collides with a tilemap, and prevents intersection.
Determines whether a moving axis-aligned bounding box collides with a tilemap, and prevents intersection.
Based off collide-2d-tilemap. The key difference is that this module provides a non-destructive API, and doesn't depend on aabb-2d.
Example usage:
var collideAabbTilemap = require('collide-2d-aabb-tilemap')
var tilemap = [
[ 0, 0, 0, 1 ],
[ 1, 0, 0, 1 ],
[ 1, 0, 0, 1 ],
[ 1, 1, 1, 1 ]
]
// (0,0) - (16,16)
var player = [0, 0, 16, 16]
// collideAabbTilemap(field, size of tile in pixels, [width, height])
collide = collideAabbTilemap(my_tilemap, 32, [4, 4])
my_game_event_loop(function(dt) {
var vec = get_player_input() * dt
collide(player, vec, function(moveAxis, moveDir, tileIdx, tileCoords) {
// true => solid
return tileIdx > 0
})
})
The algorithm used is taken from this article. Detection and correction is applied on each X and Y axis separately.
Produces a collide(aabb, vec2, oncollide)
function.
array
may be a single-dimension array (or
ndarray) of integers OR a function
of the form fn(tileX, tileY) -> integer
.
tilesize
are the pixel dimensions of a tile.
dimensions
is a size 2 array of integers, [width, height]
. If it is not
provided, the map will be assumed to be square.
Attempt to advance aabb
by moveDelta
against the aforementioned tilemap
.
Non-destructive.
If there is no collision, offset == moveDelta
. Otherwise, it will be shorter
in one or both axes.
aabb
is assumed to be a size 4 array of the form [x, y, width, height]
.
moveDelta
is assumed to be a gl-matrix
-style vec2
or [x, y]
.
onCollide
is a callback function, taking the following arguments:
moveAxis
: an integer representing the axis of movement. 0
(X) or 1
(Y).moveDir
: either -1 or 1, denoting the direction of the movement.tileIdx
: the tile integer data of the tile a candidate collision has been detected against.tileCoords
: a size 2 array of tile coordinates.If the callback returns a truthy value, the tile will be treated as solid, and no further tiles will be checked along this axis.
MIT
FAQs
Determines whether a moving axis-aligned bounding box collides with a tilemap, and prevents intersection.
The npm package collide-2d-aabb-tilemap receives a total of 0 weekly downloads. As such, collide-2d-aabb-tilemap popularity was classified as not popular.
We found that collide-2d-aabb-tilemap demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.