Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.70 KB | None | 0 0
  1. function mario:movement(dt)
  2. local maxrunspeed = maxrunspeed
  3. local maxwalkspeed = maxwalkspeed
  4. local runacceleration = runacceleration
  5. local walkacceleration = walkacceleration
  6.  
  7. --HORIZONTAL MOVEMENT
  8. if runkey(self.playernumber) then --RUNNING
  9. if rightkey(self.playernumber) then --MOVEMENT RIGHT
  10. if self.jumping or self.falling then --IN AIR
  11. if self.speedx < maxwalkspeed then
  12. if self.speedx < 0 then
  13. self.speedx = self.speedx + runaccelerationair*dt*airslidefactor
  14. else
  15. self.speedx = self.speedx + runaccelerationair*dt
  16. end
  17.  
  18. if self.speedx > maxwalkspeed then
  19. self.speedx = maxwalkspeed
  20. end
  21. elseif self.speedx > maxwalkspeed and self.speedx < maxrunspeed then
  22. if self.speedx < 0 then
  23. self.speedx = self.speedx + runaccelerationair*dt*airslidefactor
  24. else
  25. self.speedx = self.speedx + runaccelerationair*dt
  26. end
  27.  
  28. if self.speedx > maxrunspeed then
  29. self.speedx = maxrunspeed
  30. end
  31. end
  32.  
  33. elseif self.ducking == false then --ON GROUND
  34. if self.speedx < 0 then
  35. if self.speedx > maxrunspeed then
  36. self.speedx = self.speedx + superfriction*dt + runacceleration*dt
  37. else
  38. self.speedx = self.speedx + friction*dt + runacceleration*dt
  39. end
  40. self.animationstate = "sliding"
  41. self.animationdirection = "right"
  42. else
  43. self.speedx = self.speedx + runacceleration*dt
  44. self.animationstate = "running"
  45. self.animationdirection = "right"
  46. end
  47.  
  48. if self.speedx > maxrunspeed then
  49. self.speedx = maxrunspeed
  50. end
  51. end
  52.  
  53. elseif leftkey(self.playernumber) then --MOVEMENT LEFT
  54. if self.jumping or self.falling then --IN AIR
  55. if self.speedx > -maxwalkspeed then
  56. if self.speedx > 0 then
  57. self.speedx = self.speedx - runaccelerationair*dt*airslidefactor
  58. else
  59. self.speedx = self.speedx - runaccelerationair*dt
  60. end
  61.  
  62. if self.speedx < -maxwalkspeed then
  63. self.speedx = -maxwalkspeed
  64. end
  65. elseif self.speedx < -maxwalkspeed and self.speedx > -maxrunspeed then
  66. if self.speedx > 0 then
  67. self.speedx = self.speedx - runaccelerationair*dt*airslidefactor
  68. else
  69. self.speedx = self.speedx - runaccelerationair*dt
  70. end
  71.  
  72. if self.speedx < -maxrunspeed then
  73. self.speedx = -maxrunspeed
  74. end
  75. end
  76.  
  77. elseif self.ducking == false then --ON GROUND
  78. if self.speedx > 0 then
  79. if self.speedx < -maxrunspeed then
  80. self.speedx = self.speedx - superfriction*dt - runacceleration*dt
  81. else
  82. self.speedx = self.speedx - friction*dt - runacceleration*dt
  83. end
  84. self.animationstate = "sliding"
  85. self.animationdirection = "left"
  86. else
  87. self.speedx = self.speedx - runacceleration*dt
  88. self.animationstate = "running"
  89. self.animationdirection = "left"
  90. end
  91.  
  92. if self.speedx < -maxrunspeed then
  93. self.speedx = -maxrunspeed
  94. end
  95. end
  96.  
  97. end
  98. if (not rightkey(self.playernumber) and not leftkey(self.playernumber)) or (self.ducking and self.falling == false and self.jumping == false) then --NO MOVEMENT
  99. if self.jumping or self.falling then
  100. if self.speedx > 0 then
  101. self.speedx = self.speedx - frictionair*dt
  102. if self.speedx < minspeed then
  103. self.speedx = 0
  104. self.runframe = 1
  105. end
  106. else
  107. self.speedx = self.speedx + frictionair*dt
  108. if self.speedx > -minspeed then
  109. self.speedx = 0
  110. self.runframe = 1
  111. end
  112. end
  113. else
  114. if self.speedx > 0 then
  115. if self.speedx > maxrunspeed then
  116. self.speedx = self.speedx - superfriction*dt
  117. else
  118. self.speedx = self.speedx - friction*dt
  119. end
  120. if self.speedx < minspeed then
  121. self.speedx = 0
  122. self.runframe = 1
  123. self.animationstate = "idle"
  124. end
  125. else
  126. if self.speedx < -maxrunspeed then
  127. self.speedx = self.speedx + superfriction*dt
  128. else
  129. self.speedx = self.speedx + friction*dt
  130. end
  131. if self.speedx > -minspeed then
  132. self.speedx = 0
  133. self.runframe = 1
  134. self.animationstate = "idle"
  135. end
  136. end
  137. end
  138. end
  139.  
  140. else --WALKING
  141.  
  142. if rightkey(self.playernumber) then --MOVEMENT RIGHT
  143. if self.jumping or self.falling then --IN AIR
  144. if self.speedx < maxwalkspeed then
  145. if self.speedx < 0 then
  146. self.speedx = self.speedx + walkaccelerationair*dt*airslidefactor
  147. else
  148. self.speedx = self.speedx + walkaccelerationair*dt
  149. end
  150.  
  151. if self.speedx > maxwalkspeed then
  152. self.speedx = maxwalkspeed
  153. end
  154. end
  155. elseif self.ducking == false then --ON GROUND
  156. if self.speedx < maxwalkspeed then
  157. if self.speedx < 0 then
  158. if self.speedx < -maxrunspeed then
  159. self.speedx = self.speedx + superfriction*dt + runacceleration*dt
  160. else
  161. self.speedx = self.speedx + friction*dt + runacceleration*dt
  162. end
  163. self.animationstate = "sliding"
  164. self.animationdirection = "right"
  165. else
  166. self.speedx = self.speedx + walkacceleration*dt
  167. self.animationstate = "running"
  168. self.animationdirection = "right"
  169. end
  170.  
  171. if self.speedx > maxwalkspeed then
  172. self.speedx = maxwalkspeed
  173. end
  174. else
  175. self.speedx = self.speedx - friction*dt
  176. if self.speedx < maxwalkspeed then
  177. self.speedx = maxwalkspeed
  178. end
  179. end
  180. end
  181.  
  182. elseif leftkey(self.playernumber) then --MOVEMENT LEFT
  183. if self.jumping or self.falling then --IN AIR
  184. if self.speedx > -maxwalkspeed then
  185. if self.speedx > 0 then
  186. self.speedx = self.speedx - walkaccelerationair*dt*airslidefactor
  187. else
  188. self.speedx = self.speedx - walkaccelerationair*dt
  189. end
  190.  
  191. if self.speedx < -maxwalkspeed then
  192. self.speedx = -maxwalkspeed
  193. end
  194. end
  195. elseif self.ducking == false then --ON GROUND
  196. if self.speedx > -maxwalkspeed then
  197. if self.speedx > 0 then
  198. if self.speedx > maxrunspeed then
  199. self.speedx = self.speedx - superfriction*dt - runacceleration*dt
  200. else
  201. self.speedx = self.speedx - friction*dt - runacceleration*dt
  202. end
  203. self.animationstate = "sliding"
  204. self.animationdirection = "left"
  205. else
  206. self.speedx = self.speedx - walkacceleration*dt
  207. self.animationstate = "running"
  208. self.animationdirection = "left"
  209. end
  210.  
  211. if self.speedx < -maxwalkspeed then
  212. self.speedx = -maxwalkspeed
  213. end
  214. else
  215. self.speedx = self.speedx + friction*dt
  216. if self.speedx > -maxwalkspeed then
  217. self.speedx = -maxwalkspeed
  218. end
  219. end
  220. end
  221.  
  222. end
  223. if (not rightkey(self.playernumber) and not leftkey(self.playernumber)) or (self.ducking and self.falling == false and self.jumping == false) then --no movement
  224. if self.jumping or self.falling then
  225. if self.speedx > 0 then
  226. self.speedx = self.speedx - frictionair*dt
  227. if self.speedx < 0 then
  228. self.speedx = 0
  229. self.runframe = 1
  230. end
  231. else
  232. self.speedx = self.speedx + frictionair*dt
  233. if self.speedx > 0 then
  234. self.speedx = 0
  235. self.runframe = 1
  236. end
  237. end
  238. else
  239. if self.speedx > 0 then
  240. if self.speedx > maxrunspeed then
  241. self.speedx = self.speedx - superfriction*dt
  242. else
  243. self.speedx = self.speedx - friction*dt
  244. end
  245. if self.speedx < 0 then
  246. self.speedx = 0
  247. self.runframe = 1
  248. self.animationstate = "idle"
  249. end
  250. else
  251. if self.speedx < -maxrunspeed then
  252. self.speedx = self.speedx + superfriction*dt
  253. else
  254. self.speedx = self.speedx + friction*dt
  255. end
  256. if self.speedx > 0 then
  257. self.speedx = 0
  258. self.runframe = 1
  259. self.animationstate = "idle"
  260. end
  261. end
  262. end
  263. end
  264. end
  265. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement