Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

ship.lua 4.2 KiB

3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
3 år sedan
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. ship = Class{}
  2. function ship:init(x, y, image)
  3. self.x = x
  4. self.y = y
  5. self.ox = x
  6. self.oy = y
  7. self.dy = 0
  8. self.dx = 5
  9. self.speed = 1
  10. self.image = love.graphics.newImage(image)
  11. self.oimage = self.image
  12. self.timage = love.graphics.newImage("entities/ship/thrusting01.png")
  13. self.width = self.image:getWidth()
  14. self.height = self.image:getHeight()
  15. self.rotation = 1.5708
  16. self.vector = 1.5708
  17. self.color = {1,1,1,1}
  18. self.path = {}
  19. self.dottimer = 0.5
  20. self.fuel = 0
  21. self.destX = x
  22. end
  23. function ship:newPathDot(dotx, doty, color)
  24. return {
  25. x = dotx,
  26. y = doty,
  27. color = color
  28. }
  29. end
  30. function ship:update(dt)
  31. if not shipIsHit then
  32. self.dottimer = self.dottimer - dt
  33. if self.dottimer < 0 then
  34. if (love.keyboard.isDown('w') and self.fuel > 0 and gameState == "levelgeneral") then
  35. self.image = self.timage
  36. table.insert(self.path, self:newPathDot(self.x, self.y, 1))
  37. else
  38. self.image = self.oimage
  39. table.insert(self.path, self:newPathDot(self.x, self.y, 2))
  40. end
  41. self.dottimer = 0.2
  42. end
  43. if love.timer.getFPS() < 20 then
  44. self.path = {}
  45. end
  46. self.x = self.x + self.dx*self.speed/2
  47. self.y = self.y + self.dy*self.speed/2
  48. if self.dx ~= 0 then
  49. self.vector = math.atan( self.dy/ self.dx)
  50. end
  51. --[[if love.keyboard.isDown('s') then
  52. self.speed = math.sqrt(self.dx^2 + self.dy^2)
  53. if self.speed > 0 then
  54. self.speed = self.speed - 0.5
  55. end
  56. self.dx = math.cos(self.vector) * self.speed
  57. self.dy = math.sin(self.vector) * self.speed
  58. end ]]--
  59. if love.keyboard.isDown('w') and self.fuel > 0 and gameState == "levelgeneral" then
  60. self.fuel = self.fuel - 0.5
  61. self.speed = self.speed + 0.05
  62. end
  63. local tag = false
  64. for i in ipairs(planets) do
  65. local distanceToShip = math.sqrt((firstShip.x - planets[i].x)^2 + (firstShip.y - planets[i].y)^2)
  66. if distanceToShip < 200 and not shipIsHit and gameStatus == "play" then
  67. sounds["close"]:play()
  68. tag = true
  69. end
  70. end
  71. for i in ipairs(projectiles) do
  72. local distanceToShip = math.sqrt((firstShip.x - projectiles[i].x)^2 + (firstShip.y - projectiles[i].y)^2)
  73. if distanceToShip < 200 and not shipIsHit and gameStatus == "play" then
  74. sounds["close"]:play()
  75. tag = true
  76. end
  77. end
  78. if not tag or shipIsHit then
  79. sounds["close"]:stop()
  80. end
  81. --[[
  82. if love.keyboard.isDown('left') then
  83. self.dx = self.dx - 0.5
  84. end
  85. if love.keyboard.isDown('right') then
  86. self.dx = self.dx + 0.5
  87. end
  88. if love.keyboard.isDown('up') then
  89. self.dy = self.dy - 0.5
  90. end
  91. if love.keyboard.isDown('down') then
  92. self.dy = self.dy + 0.5
  93. end
  94. ]]--
  95. --print(self.speed)
  96. --[[
  97. if love.keyboard.isDown('right') then
  98. self.rotation = self.rotation + 10
  99. elseif love.keyboard.isDown('left') then
  100. self.rotation = self.rotation - 10
  101. end]]--
  102. --print("rotation:" .. self.rotation)
  103. --print("speed:" .. self.dx .. " " .. self.dy)
  104. if self.dx < 0 then
  105. self.vector = self.vector - 3.14159
  106. end
  107. self.vector = self.vector + 1.5708
  108. end
  109. end
  110. function ship:draw()
  111. -- Draw the `self.canvas` to screen
  112. love.graphics.setColor(unpack(self.color))
  113. --print("DAW" .. camera.x)
  114. for i in ipairs(self.path) do
  115. if i > 1 then
  116. love.graphics.setColor(0.9,0.9,0.9,1)
  117. if (self.path[i].color < 2) then
  118. love.graphics.setColor(0.9,0.4,0.4,1)
  119. end
  120. --print("DOING".. i)
  121. love.graphics.line(self.path[i].x, self.path[i].y, self.path[i-1].x, self.path[i-1].y)
  122. end
  123. end
  124. love.graphics.setColor(1,1,1,1)
  125. love.graphics.draw(self.image, self.x, self.y, self.vector, 1, 1, self.width/2, self.height/2)
  126. end
  127. function ship:reset()
  128. self.x = self.ox
  129. self.y = self.oy
  130. self.dy = 0
  131. self.dx = 5
  132. self.rotation = 1.57
  133. self.canvas = love.graphics.newCanvas(WINDOW_WIDTH, WINDOW_HEIGHT)
  134. self.vector = 1.56
  135. self.speed = 1
  136. self.destX = self.x
  137. self.path = {}
  138. self.dottimer = 0.5
  139. end