Guest User

Danmakufu player laser issue

a guest
Oct 10th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. task CreateNoodleLaser(op_obj,dir,dmg) { //(parent player object, direction of laser, damage output)
  2. let texture = CSD ~ "img/PlayerShotsSheet.png";
  3. let getX;
  4. let getY;
  5. let animPhase = 0; //looping animation or exiting
  6. let f = 0; //frame count (60fps)
  7. let fRate = 4; //framerate for animation (format: fRate*x, x = frame #)
  8.  
  9. let obj = ObjShot_Create(OBJ_STRAIGHT_LASER); //Create laser shot object
  10. ObjShot_Regist(obj);
  11. ObjShot_SetDamage(obj,dmg);
  12. ObjShot_SetGraphic(obj,1);
  13. ObjLaser_SetLength(obj,600);
  14. ObjLaser_SetIntersectionWidth(obj,16);
  15. ObjMove_SetAngle(obj,dir);
  16.  
  17. let playerShot = ObjPrim_Create(OBJ_SPRITE_2D); //Create prim object for texture
  18. ObjPrim_SetTexture(playerShot,texture);
  19. ObjSprite2D_SetSourceRect(playerShot,1,1,32,512);
  20. ObjSprite2D_SetDestRect(playerShot,-32,-32,32,600);
  21. ObjRender_SetBlendType(playerShot,BLEND_ALPHA);
  22. ObjRender_SetAlpha(playerShot,0);
  23. ObjRender_SetAngleZ(playerShot,dir);
  24. Obj_SetRenderPriorityI(playerShot,47);
  25. ObjRender_SetScaleXYZ(playerShot,1,1,1);
  26.  
  27. while(!Obj_IsDeleted(op_obj)) {
  28.  
  29. while(ObjCol_IsIntersected(obj)) { //checks if collision is occuring, which it isn't for some reason
  30. WriteLog("collision");
  31. yield;
  32. }
  33.  
  34. while(GetVirtualKeyState(VK_SHOT) == KEY_HOLD && animPhase == 0) { //while animPhase is not 1 (exit phase) and key pressed
  35. getX = ObjRender_GetX(op_obj);
  36. getY = ObjRender_GetY(op_obj);
  37. ObjRender_SetAngleZ(playerShot,dir);
  38. ObjRender_SetScaleXYZ(obj,1,1,1);
  39. ObjMove_SetPosition(obj,round(getX),round(getY)-16);
  40. ObjRender_SetAlpha(playerShot,255);
  41. ObjRender_SetPosition(playerShot,round(getX),round(getY)-16,1);
  42. ObjRender_SetScaleXYZ(playerShot,1,1,1);
  43. ObjShot_SetDamage(obj,dmg);
  44. f++; //frame increment
  45. if(f >= fRate*6) {f = fRate*3;} // Loop animation to frame 12 (start of loop animation)
  46. if(f >= fRate*0 && f < fRate*1) {ObjSprite2D_SetSourceRect(playerShot,256,1,288,512);} //start at noodle appearance
  47. if(f >= fRate*1 && f < fRate*2) {ObjSprite2D_SetSourceRect(playerShot,224,1,256,512);}
  48. if(f >= fRate*2 && f < fRate*3) {ObjSprite2D_SetSourceRect(playerShot,192,1,224,512);}
  49. if(f >= fRate*3 && f < fRate*4) {ObjSprite2D_SetSourceRect(playerShot,1,1,32,512);} //looping portion
  50. if(f >= fRate*4 && f < fRate*5) {ObjSprite2D_SetSourceRect(playerShot,32,1,64,512);}
  51. if(f >= fRate*5 && f < fRate*6) {ObjSprite2D_SetSourceRect(playerShot,64,1,96,512);}
  52. yield;
  53. }
  54.  
  55. if(GetVirtualKeyState(VK_SHOT) == KEY_PULL) { //if shot key is pulled, initiate exit animation
  56. animPhase = 1;
  57. f = 0;
  58. }
  59.  
  60. while(animPhase == 1) { //exit animation phase
  61. f++;
  62. getX = ObjRender_GetX(op_obj);
  63. getY = ObjRender_GetY(op_obj);
  64. ObjMove_SetPosition(obj,getX,getY-16);
  65. ObjRender_SetPosition(playerShot,round(getX),round(getY)-16,1);
  66.  
  67. if(f >= fRate*3) { //end animation, laser is effectively gone (scale and dmg = 0)
  68. ObjRender_SetScaleXYZ(playerShot,0,0,1);
  69. ObjShot_SetDamage(obj,0);
  70. f = 0;
  71. animPhase = 0;
  72. }
  73. if(f >= fRate*0 && f < fRate*1) {ObjSprite2D_SetSourceRect(playerShot,160,1,192,512);} //exit animation
  74. if(f >= fRate*1 && f < fRate*2) {ObjSprite2D_SetSourceRect(playerShot,128,1,160,512);}
  75. if(f >= fRate*2 && f < fRate*3) {ObjSprite2D_SetSourceRect(playerShot,96,1,128,512);}
  76. yield;
  77. }
  78. yield;
  79. }
  80. }
Add Comment
Please, Sign In to add comment