bullets and sounds
This commit is contained in:
parent
a6ecbfd7f0
commit
b7d3bcce27
2 changed files with 73 additions and 0 deletions
BIN
assets/weapons/bullet.png
Normal file
BIN
assets/weapons/bullet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 174 B |
73
bullet/bullet.lua
Normal file
73
bullet/bullet.lua
Normal file
|
@ -0,0 +1,73 @@
|
|||
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
|
Loading…
Reference in a new issue