YAY! I finally got it to work! For now, I haven’t used a big sprite, but I’ll fix it later.
What I’ve done:
I changed the paraglider’s physics to “dynamic” and gave it a collision listener. When the paraglider hits the ground (just an invisible line) it calls onCollision function.
It then remove itself and creates a new object, called paraLander. paraLander transition down a bit, then onComplete it calls soldierFrag. soldierFrag is a animation where the soldier throws a grenade (goFrag). When it is done, it calls soldierRun. soldierRun then transition out of the screen and removes itself.
Now, if I kill the the paraglider it dies and no new transitions begins, just as I wanted.
I don’t know how good this code is though and how different it is from what you guys described, but it works! 
Thank you again Seth and cinmay! 
function onCollision(self, event)
if (self.name == "paraGlider" and event.other.name == "ground") then
-- soldierRun
---- Enemy soldier starts running
local function soldierRun()
soldierFrags:removeSelf()
local sheet = sprite.newSpriteSheet( "images/enemies/soldier\_run.png", 130, 120 )
thetime = 8000
local spriteSet = sprite.newSpriteSet(sheet, 1, 7)
sprite.add( spriteSet, "soldierRuns", 1, 12, 100, 0 )
local soldierRuns = sprite.newSprite( spriteSet )
soldierRuns.x = soldierFrags.x
soldierRuns.y = soldierFrags.y
soldierRuns.xScale = 0.5
soldierRuns.yScale = 0.5
soldierRuns:prepare("soldierRuns")
soldierRuns:play()
transition.to( soldierRuns, { time=thetime, alpha=1, x=-20, onComplete = function(self) self.parent:remove(self); self = nil; end } )
end
-- soldierFrag
---- Enemy soldier throws frag
local function soldierFrag()
paraLander:removeSelf()
print("soldierFrag")
local sheet = sprite.newSpriteSheet( "images/enemies/soldier\_frag.png", 130, 120 )
thetime = 2000
local spriteSet = sprite.newSpriteSet(sheet, 1, 7)
sprite.add( spriteSet, "soldierFrags", 1, 68, 100, 1 )
soldierFrags = sprite.newSprite( spriteSet )
soldierFrags.x = paraLander.x-15
soldierFrags.y = paraLander.y+20
soldierFrags.xScale = 0.5
soldierFrags.yScale = 0.5
soldierFrags:prepare("soldierFrags")
soldierFrags:play()
-- goFrag
---- Frags explodes
function goFrag()
local sheet = sprite.newSpriteSheet( "images/explosions/frag.png", 260, 283 )
thetime = 2000
local spriteSet = sprite.newSpriteSet(sheet, 1, 5)
sprite.add( spriteSet, "frag", 1, 40, 100, 1 )
-- Sets random throw hit
stringX = math.random(100, 150)
stringY = math.random(10, 20)
local throwFrag = sprite.newSprite( spriteSet )
throwFrag.x = soldierFrags.x-stringX
throwFrag.y = soldierFrags.y-stringY
throwFrag.xScale = 0.5
throwFrag.yScale = 0.5
throwFrag:prepare("frag")
throwFrag:play()
timer.performWithDelay( 1, healthP, 1)
end
timer.performWithDelay( 2000, goFrag, 1)
transition.to( soldierFrags, { time=thetime, alpha=1, onComplete = soldierRun } )
end
-- paraLander
---- Parachuter lands
local sheet = sprite.newSpriteSheet( "images/enemies/para\_land.png", 261, 240 )
local spriteSet = sprite.newSpriteSet(sheet, 1, 7)
sprite.add( spriteSet, "paraland", 1, 9, 400, 1 )
paraLander = sprite.newSprite( spriteSet )
paraLander.x = self.x
paraLander.y = self.y
paraLander.xScale = -0.5
paraLander.yScale = 0.5
self:removeSelf()
randDir = math.random(1, 2)
paraLander:prepare("paraland")
paraLander:play()
transition.to( paraLander, { time=600, alpha=1, y=270, onComplete = soldierFrag})
end
end
[code]
local function gameLoop(event)
if event.time - timeLastCopter >= math.random(4000, 5000) then
– Copter code…
– spawnPara
– paraGlider
– Parachuters, 20% chance no chuter
randParaX = math.random(1, 5)
if randParaX > 1 then
local function spawnPara()
local sheet = sprite.newSpriteSheet( “images/enemies/para_glide.png”, 261, 240 )
thetime = math.random(5000, 7000)
local spriteSet = sprite.newSpriteSet(sheet, 1, 7)
sprite.add( spriteSet, “paraglide”, 1, 31, 400, 1 )
paraGlider = sprite.newSprite( spriteSet )
paraGlider.x = copter.x-35
paraGlider.y = copter.y
randDir = math.random(1, 2)
paraGlider.xScale = -0.5
paraGlider.yScale = 0.5
paraGlider:prepare(“paraglide”)
paraGlider:play()
paraGlider.name = “paraGlider”
pentagonShape = { 2, 17 , -12, 39 , -13, 16 , -9, -1 }
physics.addBody(paraGlider, {bounce = 0, shape=pentagonShape})
paraGlider.isFixedRotation = true
paraGlider.collision = onCollision
paraGlider:addEventListener(“collision”, paraGlider)
paraGlider.linearDamping = 5
gameLayer:insert(paraGlider)
end
– Spawns random 1-4, with 500 delay
randPara = math.random(1, 1)
timer.performWithDelay( 500, spawnPara, randPara)
end
[/code] [import]uid: 54640 topic_id: 10149 reply_id: 37785[/import]