Advertisement
Guest User

Untitled

a guest
Sep 18th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. task TWaveCircle()
  2. {
  3. //レンダリングターゲットに使用するテクスチャ
  4. let renderTexture = GetReservedRenderTargetName(0);
  5.  
  6. let frame = 0; //フレーム
  7. let baseEffectRadius = 128; //基準エフェクト半径
  8. let outerFluct = 16; //エフェクト半径の最大変化量
  9. let effectRadius = 0; //エフェクト半径
  10.  
  11.  
  12. let priEffectMin = 20; //エフェクトをかける最小優先度
  13. let priEffectMax = 28; //エフェクトをかける最大優先度
  14.  
  15. //背景のみエフェクトの対象とする
  16. //エフェクトの描画でまかなえるため、
  17. //優先度20~28の通常描画を無効にする。
  18. SetInvalidRenderPriorityA1(priEffectMin, priEffectMax);
  19.  
  20. let frameWidth = GetStgFrameWidth();
  21. let frameHeight = GetStgFrameHeight();
  22. let frameLeft = GetStgFrameLeft();
  23. let frameRight = frameLeft + frameWidth;
  24. let frameTop = GetStgFrameTop();
  25. let frameBottom = frameTop + frameHeight;
  26.  
  27.  
  28. //--------------------------------
  29. //ゆがみオブジェクト
  30. let objWave = ObjPrim_Create(OBJ_SPRITE_2D); //2Dスプライトオブジェクト生成
  31. Obj_SetRenderPriorityI(objWave, 25); //描画優先度を設定
  32. ObjPrim_SetTexture(objWave, renderTexture); //テクスチャを設定
  33. ObjSprite2D_SetSourceRect(objWave, frameLeft, frameTop, frameRight, frameBottom);
  34. ObjSprite2D_SetDestRect(objWave, 0, 0, frameWidth, frameHeight);
  35. Obj_SetRenderPriorityI(objWave, priEffectMax + 1);
  36.  
  37. //ゆがみオブジェクトにシェーダを設定
  38. let pathShader = GetCurrentScriptDirectory ~ "SamplePS03_HLSL.txt";
  39. ObjShader_SetShaderF(objWave, pathShader);
  40. ObjShader_SetTechnique(objWave, "TecWave");
  41.  
  42.  
  43. //ボスのライフが0になるまでエフェクトをかける。
  44. let objEnemy = GetEnemyBossObjectID[0];
  45. while(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)
  46. {
  47. //エフェクト半径
  48. effectRadius = baseEffectRadius + outerFluct * sin(frame*4);
  49.  
  50. let enemyX = ObjMove_GetX(objEnemy); //敵座標X
  51. let enemyY = ObjMove_GetY(objEnemy); //敵座標Y
  52.  
  53. //--------------------------------
  54. //優先度20~28(背景)をエフェクト用のテクスチャに描画
  55. //シェーダ解除
  56. RenderToTextureA1(renderTexture, priEffectMin, priEffectMax, true);
  57.  
  58. //--------------------------------
  59. //シェーダにパラメータを設定
  60. ObjShader_SetFloat(objWave, "frame_", frame);
  61. ObjShader_SetFloat(objWave, "enemyX_", enemyX + frameLeft);
  62. ObjShader_SetFloat(objWave, "enemyY_", enemyY + frameTop);
  63. ObjShader_SetFloat(objWave, "waveRadius_", effectRadius);
  64.  
  65. frame++;
  66. yield;
  67. }
  68.  
  69. //エフェクト用オブジェクト削除
  70. Obj_Delete(objWave);
  71. ClearInvalidRenderPriority();
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement