Does anyone have any advice on how to generate a convincing laser beam animation? I’ve been using a basic gradient line as a placeholder but it’s not really very compelling visually.
An image-based beam seems like it wouldn’t work due to the need to draw it at varying lengths.
[lua]function drawBeam (distance, angle)
local h = graphics.newGradient({ 220, 0, 0 },{ 0, 30, 0 },“down” )
beamImage = display.newRect(shipX,shipY,distance, 3)
beamImage:setReferencePoint( display.TopLeftReferencePoint )
beamImage:setFillColor( h )
beamImage:rotate(angle)
beamImage.xScale = .2
end
function doTurn()
if (beamImage) then
if (beamImage.xScale < 1) then
beamImage.xScale = beamImage.xScale + .2
end
frame = frame + 5
local red = 220 - frame
local blue = math.random (0,frame/2)
local green = math.random(0,frame/2)
local h = graphics.newGradient({ red, green, blue },{ red/4, 0, 0 },“down” )
beamImage:setFillColor( h )
if (red <= 0) then
beamImage:removeSelf()
beamImage = nil
frame = 0
a = nil
d = nil
end
end
Runtime:addEventListener( “enterFrame”, doTurn )[/lua] [import]uid: 1560 topic_id: 21242 reply_id: 321242[/import]



