Skip to content

Handle collisions

React to a hit in Lua

Connect the collision signal to a method on your script:

function Enemy:onCreate(entity)
    self.entity = entity
    Component.connect(entity, "onCollisionEnter", entity, "onHit")
end

function Enemy:onHit(selfEntity, other)
    log.info("hit by " .. tostring(other))
end

Trigger zones

A collider with isTrigger = true reports overlaps without blocking. Use triggers for pickups, goals, and hit boxes:

Component.addBoxCollider(entity, 32, 32, true) -- isTrigger = true
Component.connect(entity, "onTriggerEnter", entity, "onPickup")

Layers

Restrict what collides with what using layers and masks:

Component.setColliderLayer(entity, "Player")
Component.setColliderMask(entity, Layers.bit("Enemy") | Layers.bit("Wall"))

See Engine → Collisions, Lua → Collider, and Lua → Layers.