73 lines
2 KiB
Lua
73 lines
2 KiB
Lua
Bullet = Object.extend(Object)
|
|
|
|
function Bullet:new( player )
|
|
self.player = player
|
|
self.ex = 0
|
|
self.ey = 0
|
|
self.ox = 0
|
|
self.oy = 0
|
|
self.angle = 0
|
|
self.emitted = 0
|
|
self.lifetime = 1
|
|
self.finished = false
|
|
self.speed = 8
|
|
end
|
|
|
|
function Bullet:update(dt)
|
|
self.emitted = self.emitted + dt
|
|
|
|
if self.emitted > self.lifetime then
|
|
self.finished = true
|
|
else
|
|
self.ex = self.ex + math.lengthdir_x( self.speed, self.angle ) + self.ox
|
|
self.ey = self.ey + math.lengthdir_y( self.speed, self.angle ) + self.oy
|
|
|
|
self.source:setPosition(self.ex, self.ey,0)
|
|
end
|
|
end
|
|
|
|
function Bullet:draw()
|
|
if self.finished == false then
|
|
local bx = self.ex
|
|
local by = self.ey
|
|
local a = math.clamp(0, 1-(-0.3+(self.emitted/self.lifetime)), 1)
|
|
|
|
love.graphics.setColor(1,1,1,a)
|
|
love.graphics.draw( bulletShot, bx, by, self.angle*(math.pi/180) )
|
|
end
|
|
end
|
|
|
|
function Bullet:emit( ex, ey, ox, oy, angle, lifetime )
|
|
self.ex = ex
|
|
self.ey = ey
|
|
self.ox = ox
|
|
self.oy = oy
|
|
self.angle = angle
|
|
self.lifetime = lifetime
|
|
|
|
self:generateSound(ex,ey)
|
|
end
|
|
|
|
function Bullet:generateSound(px,py)
|
|
local sound = sfxr.newSound()
|
|
sound:resetParameters()
|
|
sound.waveform = 0
|
|
sound.frequency.start = math.variance(0.50948863032722, 50)
|
|
sound.frequency.min = math.variance(0.23191561855507, 50)
|
|
sound.frequency.slide = -(math.variance(0.30302405172478, 50))
|
|
sound.duty.ratio = math.variance(0.11477388876231, 50)
|
|
sound.duty.sweep = math.variance(0.10811502385025, 50)
|
|
sound.envelope.attack = math.random(0.0,0.1)
|
|
sound.envelope.sustain = 0.14060104631004 * (math.random(1,100)/100)
|
|
sound.envelope.decay = math.variance(0.22882606362934, 50)
|
|
sound.envelope.punch = math.variance(0.29031108049385,50)
|
|
sound.phaser.offset = 0
|
|
sound.phaser.sweep = 0
|
|
sound.highpass.cutoff = math.variance(0.25467943576175, 50)
|
|
|
|
local soundData = sound:generateSoundData()
|
|
self.source = love.audio.newSource(soundData)
|
|
self.source:setVolume(1)
|
|
self.source:setPosition(px,py)
|
|
self.source:play()
|
|
end
|