Player.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. class "Player"
  2. function Player:Player(screen, playerEntity)
  3. self.screen = screen
  4. self.playerEntity = playerEntity
  5. playerEntity.width = 50
  6. playerEntity.height = 90
  7. self.playerPhysics = screen:trackPhysicsChild(playerEntity, PhysicsScreenEntity.ENTITY_TRIPLE_CIRCLE, false, 0.0, 1, 0, false, true, -1)
  8. self.playerSprite = safe_cast(playerEntity:getEntityById("playerSprite", true), ScreenSprite)
  9. self.groundSensor = safe_cast(playerEntity:getEntityById("groundSensor", true), ScreenShape)
  10. self.playerVelocity = 0.0
  11. self.jumping = true
  12. self.numCoins = 0
  13. self.dead = false
  14. self.deadCounter = 0
  15. self.jumpSound = Sound("Resources/sounds/jump.wav")
  16. self.dieSound = Sound("Resources/sounds/die.wav")
  17. end
  18. function Player:Jump()
  19. if self.jumping == false and self.dead == false then
  20. self.playerPhysics:applyImpulse(0.0, -80.0)
  21. self.jumpSound:Play()
  22. end
  23. end
  24. function Player:Die()
  25. if self.dead == true then return end
  26. self.playerSprite.rotation.roll = -90
  27. self.playerSprite.position.y = 10
  28. self.playerPhysics:applyImpulse(0.0, -80.0)
  29. self.dead = true
  30. self.dieSound:Play()
  31. end
  32. function Player:Update(elapsed)
  33. if self.playerEntity.position.y > 400 then
  34. self:Die()
  35. end
  36. if self.dead then
  37. self.deadCounter = self.deadCounter + elapsed
  38. self.playerSprite:playAnimation("idle", 0, false)
  39. self.playerPhysics:setVelocityX(0)
  40. return
  41. end
  42. if self.screen:isEntityColliding(self.groundSensor) then
  43. self.jumping = false
  44. else
  45. self.jumping = true
  46. end
  47. if Services.Input:getKeyState(KEY_LEFT) then
  48. self.playerVelocity = -7.2
  49. self.playerSprite.scale.x = -1
  50. elseif Services.Input:getKeyState(KEY_RIGHT) then
  51. self.playerVelocity = 7.2
  52. self.playerSprite.scale.x = 1
  53. else
  54. self.playerVelocity = 0.0
  55. end
  56. self.playerPhysics:setVelocityX(self.playerVelocity)
  57. if self.jumping == true then
  58. self.playerSprite:playAnimation("jump", 0, false)
  59. else
  60. if self.playerVelocity == 0.0 then
  61. self.playerSprite:playAnimation("idle", 0, false)
  62. else
  63. self.playerSprite:playAnimation("walk", 0, false)
  64. end
  65. end
  66. end