Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2014
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. var bx = box.x;
  2. var by = box.y;
  3. var bw = box.width;
  4. var bh = box.height;
  5.  
  6. var boxCenterX = bx + (bw/2);
  7. var boxCenterY = by + (bh/2);
  8.  
  9. var playerCenterX = player.x + player.xvel + (player.width/2);
  10. var playerCenterY = player.y + player.yvel + (player.height/2);
  11.  
  12. //left = negative and right = positve, 0 = middle
  13. var distanceXin = playerCenterX - boxCenterX;
  14. var distanceYin = playerCenterY - boxCenterY;
  15.  
  16. var distanceWidth = Math.abs(distanceXin);
  17. var distanceHeight = Math.abs(distanceYin);
  18.  
  19. var halfWidths = (bw/2) + (player.width/2);
  20. var halfHeights = (bh/2) + (player.height/2);
  21.  
  22. if(distanceWidth < halfWidths){
  23. //xcollision
  24. if(distanceHeight < halfHeights){
  25. //ycollision
  26. if(player.xvel == 0){
  27. //adjust y
  28. if(distanceYin > 0){
  29. //bottom
  30. player.y = by + bh;
  31. player.yvel = 0;
  32. }else{
  33. player.y = by - player.height;
  34. player.yvel = 0;
  35. }
  36. }else if(player.yvel == 0){
  37. //adjust x
  38. if(distanceXin > 0){
  39. //right
  40. player.x = bx + bw;
  41. player.xvel = 0;
  42. }else{
  43. //left
  44. player.x = bx - player.width;
  45. player.xvel = 0;
  46. }
  47. }else{
  48. var yTime = distanceYin / player.yvel;
  49. var xTime = distanceXin / player.xvel;
  50.  
  51. if(xTime < yTime){
  52. //adjust the x it collided first
  53. if(distanceXin > 0){
  54. //right
  55. player.x = bx + bw;
  56. player.xvel = 0;
  57. }else{
  58. //left
  59. player.x = bx - player.width;
  60. player.xvel = 0;
  61. }
  62. }else{
  63. //adjust the y it collided first
  64. if(distanceYin > 0){
  65. //bottom
  66. player.y = by + bh;
  67. player.yvel = 0;
  68. }else{
  69. player.y = by - player.height;
  70. player.yvel = 0;
  71. }
  72. }
  73. }
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement