|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- planet = Class{}
-
- G = 6.67e-1
-
-
- function planet:init(x, y, mass, radius, img, arg)
- self.x = x
- self.y = y
- self.mass = mass
- self.attractionX = 0
- self.attractionY = 0
- self.r = radius
- self.w = img:getWidth()
- self.image = img
- self.angle = 0
- self.color = {1,1,1,1}
- if arg == "nodelete" then
- self.deletable = false
- else
- self.deletable = true
- end
- end
-
- function planet:update(dt)
- if not reachedGoal then
- local distanceToShip = math.sqrt((firstShip.x - self.x)^2 + (firstShip.y - self.y)^2)
- --print("update")
- local gravitationalAttraction = G*self.mass/(distanceToShip^2)
- --print((firstShip.x - self.x) .. " " .. (firstShip.y - self.y))
- self.angle = math.atan( (firstShip.y - self.y)/ (firstShip.x - self.x))
- if self.x < firstShip.x then
- self.angle = self.angle - 3.14159
- end
- --print("Angle is:" .. self.angle*57.29)
- self.attractionY = math.sin(self.angle) * gravitationalAttraction
- self.attractionX = math.cos(self.angle) * gravitationalAttraction
- love.window.setTitle(self.attractionX)
- firstShip.dx = firstShip.dx + self.attractionX
- firstShip.dy = firstShip.dy + self.attractionY
- if distanceToShip < self.w/4 then
- shipIsHit = true
- sounds["close"]:stop()
- sounds["boom"]:play()
- end
- end
- end
-
- function planet:draw()
- --love.graphics.rectangle("fill", firstShip.x, firstShip.y, 30, 30)
- love.graphics.push()
- love.graphics.translate(firstShip.x, firstShip.y) -- move relative (0,0) to (x,y)
- love.graphics.rotate(self.angle) -- rotate coordinate system around relative (0,0) (absolute (x,y))
- --love.graphics.rectangle("fill", -(firstShip.x - self.x)/2, -20/2, (firstShip.x - self.x), 20) VECTOR
- love.graphics.pop()
- love.graphics.setColor(unpack(self.color))
- love.graphics.draw(self.image, self.x, self.y, 1.5708, self.r, self.r, self.w/2, self.w/2)
- end
|