Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function delay(d) {
- loop(d) { yield; }
- }
- //-----------------------------------------------
- task shockwave(tobj,color){
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let Xscale = 0.2;
- let Yscale = 0.2;
- let alpha = 255;
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory ~ "shockwave.png");
- ObjSprite2D_SetSourceRect(obj,0, 0, 256, 256);
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,0);
- Obj_SetRenderPriorityI(obj,50);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetAlpha(obj,alpha);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetPosition(obj,ObjMove_GetX(tobj),ObjMove_GetY(tobj),0);
- ObjRender_SetAngleXYZ(obj,0,0,0);
- loop(30){
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,0);
- ObjRender_SetAlpha(obj,alpha);
- Xscale+=0.1;
- Yscale+=0.1;
- alpha-=8.5;
- yield;
- }
- Obj_Delete(obj);
- }
- task chargeWave(target,size,color) {
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let alpha = 40;
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory ~ "shockwave.png");
- ObjSprite2D_SetSourceRect(obj,0, 0, 256, 256);
- ObjRender_SetScaleXYZ(obj,size,size,0);
- Obj_SetRenderPriorityI(obj,50);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetAlpha(obj,alpha);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetPosition(obj,ObjMove_GetX(target),ObjMove_GetY(target),0);
- ObjRender_SetAngleXYZ(obj,0,0,0);
- loop(42){
- size -= size/21;
- alpha += 107/42;
- ObjRender_SetScaleXYZ(obj,size,size,0);
- ObjRender_SetAlpha(obj,alpha);
- yield;
- }
- Obj_Delete(obj);
- }
- task enemy_explode(tobj,expand,angle,color){
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let Xscale = 0.1;
- let Yscale = 0.1;
- let alpha = 255;
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory ~ "shockwave.png");
- ObjSprite2D_SetSourceRect(obj,0, 0, 256, 256);
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,0);
- Obj_SetRenderPriorityI(obj,50);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetAlpha(obj,alpha);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetPosition(obj,ObjMove_GetX(tobj),ObjMove_GetY(tobj),0);
- ObjRender_SetAngleXYZ(obj,angle,angle,0);
- loop(30){
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,0);
- ObjRender_SetAlpha(obj,alpha);
- Xscale+=expand;
- Yscale+=expand;
- alpha-=8.5;
- yield;
- }
- Obj_Delete(obj);
- }
- task RedMagicCircle(enemyID,delay) {
- let circleobj = ObjPrim_Create(OBJ_SPRITE_2D);
- let circleimg = GetCurrentScriptDirectory ~ "eff_magicsquare.png";
- let scale = 0;
- let scale1 = 1.4;
- let scaleA = 0;
- let angle = 0;
- let angle1 = 3.6;
- let speed = 0;
- let speed1 = 0;
- let speed2 = 0;
- let speed3 = 0;
- let alpha = 112;
- ObjPrim_SetTexture(circleobj, circleimg);
- ObjRender_SetBlendType(circleobj, BLEND_ADD_ARGB );
- ObjRender_SetAngleXYZ(circleobj, 0, 0, angle );
- ObjRender_SetScaleXYZ(circleobj, scale, scale, 0 );
- ObjSprite2D_SetSourceRect(circleobj, 0, 0, 256, 256 );
- ObjSprite2D_SetDestCenter(circleobj);
- loop(delay) {
- ObjRender_SetScaleXYZ(circleobj, scale, scale, 0 );
- Obj_SetRenderPriorityI(circleobj, 1 );
- ObjRender_SetAlpha(circleobj, 0 );
- yield;
- }
- while(!Obj_IsDeleted(enemyID)) {
- ObjRender_SetAlpha(circleobj, alpha );
- Obj_SetRenderPriorityI(circleobj, 32 );
- ObjRender_SetPosition(circleobj,ObjMove_GetX(enemyID),ObjMove_GetY(enemyID),0);
- if(scale<scale1) {
- scale += scale1/28;
- angle -= angle1;
- angle1 += 0.02;
- ObjRender_SetScaleXYZ(circleobj,scale,scale,0);
- ObjRender_SetAngleXYZ(circleobj,25 - 25 * cos(speed),2 + 27 * sin(speed),angle);
- }
- //ObjRender_SetPosition(circleobj,ObjMove_GetX(enemyID),ObjMove_GetY(enemyID),0);
- ObjRender_SetAngleXYZ(circleobj, 21 - 28 * cos(speed), 2 + 35 * sin(speed), angle - speed3*15 - speed*1.8 ); //Sets the angle and the rotation speed of the circle.
- ObjRender_SetScaleXYZ(circleobj, scale1 - 0.1 * sin( speed*0 ), scale1 - 0.1 * sin( speed*0 ), 0 ); //Determines if the circle size changes while rotating. '0' means no change in size.
- if( speed1 < 1 ){ speed2 += 2; }
- speed1 = 1 * sin( speed2 );
- if( scale1 < 1 ){ scaleA += 2; }
- scale1 = 1 * sin( scaleA );
- if( scale1 >= 1 && speed1 >= 1 ){ speed += 0.6; }
- yield;
- }
- Obj_Delete(circleobj);
- }
- //----- Following effect created with help of Python's codings
- task Junko_Aura(target,r,g,b,angle,delay) {
- let auraimg = "script/Sandbox/Kanjuden Boss Rush/Boss/Junko/enm6b.png";
- let bsize = 0;
- let fsize = 1.2;
- let change = 0;
- let aura = ObjPrim_Create(OBJ_SPRITE_2D);
- ObjPrim_SetTexture(aura,auraimg);
- Obj_SetRenderPriorityI(aura,35);
- ObjSprite2D_SetSourceRect(aura,0,0,128,84);
- ObjSprite2D_SetDestRect(aura,0,-42,128,42);
- ObjRender_SetBlendType(aura,BLEND_ADD_ARGB);
- ObjRender_SetColor(aura,r,g,b);
- ObjRender_SetAngleZ(aura,-90);
- ObjRender_SetAngleX(aura,90);
- ObjRender_SetScaleXYZ(aura,bsize,bsize,0);
- loop(delay){
- ObjRender_SetScaleXYZ(aura,bsize,bsize,0);
- yield;
- }
- let asub = 90;
- let aplus = -90;
- while(!Obj_IsDeleted(target)){
- ObjRender_SetPosition(aura,ObjMove_GetX(target),ObjMove_GetY(target),0);
- if(bsize<fsize){
- ObjRender_SetScaleXYZ(aura,bsize,bsize,0);
- bsize += fsize/50;
- }
- if(ObjRender_GetAngleX(aura) > 0){
- ObjRender_SetAngleX(aura, asub);
- asub -= 15;
- }
- if(ObjRender_GetAngleZ(aura) < angle){
- ObjRender_SetAngleZ(aura, aplus);
- aplus += 15;
- }
- ObjRender_SetColor(aura,r,g,b);
- r += 3*sin(change*3.6);
- g += 2*sin(change*4);
- b += 3*sin(change*3.6);
- change++;
- yield;
- }
- Obj_Delete(aura);
- }
- //Following effects all by AJS
- task FlameAura(tobj,color,scale){
- let angle = rand(0,360);
- while(!Obj_IsDeleted(tobj)){
- flame(tobj,color,scale);
- flamebase(tobj,color,scale,angle);
- angle+=rand(45,90);
- delay(10);}
- }
- task FlameAuraBase(tobj,color,scale){
- let angle = rand(0,360);
- while(!Obj_IsDeleted(tobj)){
- flamebase(tobj,color,scale,angle);
- flamebase2(tobj,color,scale,angle);
- angle+=rand(45,90);
- delay(6);}
- }
- task FlameAuraBase2(tobj,color,scale,anchor){
- let angle = rand(0,360);
- while(!Obj_IsDeleted(anchor)){
- flamebase2(tobj,color,scale,angle);
- angle+=rand(45,90);
- delay(10);}
- }
- task flame(tobj,color,scale){
- let frame = 0;
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let Xscale = scale/2;
- let Yscale = scale/6;
- let trans = 255;
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"eff_aura.png");
- ObjSprite2D_SetSourceRect(obj,0, 0, 51, 49);
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,1);
- Obj_SetRenderPriorityI(obj,34);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetPosition(obj,ObjMove_GetX(tobj)-2,ObjMove_GetY(tobj)+8,0);
- ObjRender_SetAngleXYZ(obj,0,0,rand(-5,5));
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- loop(30){
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,1);
- ObjRender_SetAlpha(obj,trans);
- ObjRender_SetPosition(obj,ObjMove_GetX(tobj)-2,ObjMove_GetY(tobj)-20,0);
- trans-=255/30;
- Xscale+=(scale/4)/30;
- Yscale+=(scale*2)/30;
- yield;
- }
- Obj_Delete(obj);
- }
- task flamebase(tobj,color,scale,angle){
- let frame = 0;
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let Xscale = scale;
- let Yscale = scale;
- let trans = 12;
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"eff_aura.png");
- ObjSprite2D_SetSourceRect(obj,51, 5, 91, 45);
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,1);
- Obj_SetRenderPriorityI(obj,34);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetPosition(obj,ObjMove_GetX(tobj),ObjMove_GetY(tobj),0);
- ObjRender_SetAngleXYZ(obj,0,0,angle);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- loop(40){
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,1);
- ObjRender_SetAlpha(obj,trans);
- ObjRender_SetPosition(obj,ObjMove_GetX(tobj),ObjMove_GetY(tobj),0);
- trans+=255/40;
- Xscale-=scale*1.1/40;
- Yscale-=scale*1.1/40;
- yield;
- }
- Obj_Delete(obj);
- }
- task flamebase2(tobj,color,scale,angle){
- let frame = 0;
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let Xscale = scale*1.3;
- let Yscale = scale*1.3;
- let trans = 16;
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"eff_aura.png");
- ObjSprite2D_SetSourceRect(obj,51, 5, 91, 45);
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,1);
- Obj_SetRenderPriorityI(obj,24);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetPosition(obj,ObjRender_GetX(tobj),ObjRender_GetY(tobj),0);
- ObjRender_SetAngleXYZ(obj,0,0,angle);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- loop(40){
- ObjRender_SetScaleXYZ(obj,Xscale,Yscale,1);
- ObjRender_SetAlpha(obj,trans);
- ObjRender_SetPosition(obj,ObjRender_GetX(tobj),ObjRender_GetY(tobj),0);
- trans+=250/40;
- Xscale-=scale*1.15/40;
- Yscale-=scale*1.15/40;
- yield;
- }
- Obj_Delete(obj);
- }
- task MoonConcentration(tobj,frames,color){
- let spiral =0;
- let dir =0;
- loop(frames){
- loop(1){
- loop(3){
- MoonCharge(tobj,ObjMove_GetX(tobj)+cos(dir+spiral)*rand(175,196),ObjMove_GetY(tobj)+sin(dir+spiral)*rand(175,196),dir+spiral,-rand(5.25,5.5),color);
- dir+=360/3;
- }
- }
- spiral+=rand(30,40);
- yield;
- }
- }
- task MoonExplosion(tobj,color){
- let spiral =0;
- loop(8){
- ascent(i in 0..15){
- MoonCharge2(tobj,ObjMove_GetX(tobj),ObjMove_GetY(tobj),i*rand(360/16,360/6),rand(6,10),color);
- }
- wait(2);
- }
- }
- //-----Aura Effect around the boss-----
- task TWaveCircle(enemyID,color) {
- //レンダリングターゲットに使用するテクスチャ
- let renderTexture = GetReservedRenderTargetName(0);
- let frame = 0; //フレーム
- let baseEffectRadius = 144; //基準エフェクト半径
- let outerFluct = 16; //エフェクト半径の最大変化量
- let effectRadius = 0; //エフェクト半径
- let circleVertexCount = 16; //円をあらわすのに使用する頂点の数
- let innerCircleCount = 4;
- let priEffectMin = 20; //エフェクトをかける最小優先度
- let priEffectMax = 28; //エフェクトをかける最大優先度
- //背景のみエフェクトの対象とする
- //エフェクトの描画でまかなえるため、
- //優先度20~28の通常描画を無効にする。
- SetInvalidRenderPriorityA1(priEffectMin, priEffectMax);
- let frameWidth = GetStgFrameWidth();
- let frameHeight = GetStgFrameHeight();
- let frameLeft = GetStgFrameLeft();
- let frameRight = frameLeft + frameWidth;
- let frameTop = GetStgFrameTop();
- let frameBottom = frameTop + frameHeight;
- //--------------------------------
- //円形の影
- let path = "script/Sandbox/Kanjuden Boss Rush/eff/aura.png";
- let objShadow = ObjPrim_Create(OBJ_SPRITE_2D); //2Dスプライトオブジェクト生成
- Obj_SetRenderPriorityI(objShadow, 25); //描画優先度を設定
- ObjPrim_SetTexture(objShadow, path); //テクスチャを設定
- ObjRender_SetBlendType(objShadow, BLEND_ALPHA);
- ObjRender_SetAlpha(objShadow,120);
- ObjRender_SetColor(objShadow,color[0],color[1],color[2]);
- ObjSprite2D_SetSourceRect(objShadow, 0, 0, 512, 512); //描画元設定(44, 54)-(71,105)
- ObjSprite2D_SetDestCenter(objShadow);
- ObjRender_SetScaleXYZ(objShadow, 0.6, 0.6, 0);
- //--------------------------------
- //円内
- let objInnerC = ObjPrim_Create(OBJ_PRIMITIVE_2D);
- Obj_SetRenderPriorityI(objInnerC, priEffectMax + 1);
- ObjPrim_SetTexture(objInnerC, renderTexture);
- ObjPrim_SetVertexCount(objInnerC, 6 * circleVertexCount * innerCircleCount);
- //円外~エフェクト枠
- let objOuterC = ObjPrim_Create(OBJ_PRIMITIVE_2D);
- Obj_SetRenderPriorityI(objOuterC, priEffectMax + 1);
- ObjPrim_SetTexture(objOuterC, renderTexture); //テクスチャを設定
- ObjPrim_SetVertexCount(objOuterC, 3 * circleVertexCount);
- //エフェクト枠外オブジェクト
- let objOuterE = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- Obj_SetRenderPriorityI(objOuterE, priEffectMax + 1);
- ObjPrim_SetTexture(objOuterE, renderTexture); //テクスチャを設定
- //ボスのライフが0になるまでエフェクトをかける。
- while(ObjEnemy_GetInfo(enemyID, INFO_LIFE) > 0)
- {
- //エフェクト半径
- effectRadius = baseEffectRadius + outerFluct * sin(frame*4);
- let enemyX = ObjMove_GetX(enemyID); //敵座標X
- let enemyY = ObjMove_GetY(enemyID); //敵座標Y
- let circleLeft = enemyX - effectRadius + frameLeft; //エフェクト円の左端
- let circleRight = enemyX + effectRadius + frameLeft; //エフェクト円の右端
- let circleTop = enemyY - effectRadius + frameTop; //エフェクト円の上端
- let circleBottom = enemyY + effectRadius + frameTop; //エフェクト円の下端
- //--------------------------------
- //優先度20~28(背景)をエフェクト用のテクスチャに描画
- RenderToTextureA1(renderTexture, priEffectMin, priEffectMax, true);
- //--------------------------------
- //影
- ObjRender_SetPosition(objShadow, enemyX, enemyY, 0);
- //--------------------------------
- //円内
- //エフェクト内円を描画
- //ゆらいでいる部分
- ObjRender_SetPosition(objInnerC, -frameLeft, -frameTop, 0);
- ascent(let iPosI in 0 .. circleVertexCount)
- {
- let xyOldRadius = 0;
- ascent(let iCircle in 0 .. innerCircleCount)
- {
- let vertexIndex = (iPosI * innerCircleCount + iCircle) * 6;
- let angle1 = iPosI * (360 / circleVertexCount);
- let angle2 = (iPosI + 1) * (360 / circleVertexCount);
- //テクスチャのUV座標
- let uvRadius1 = iCircle * effectRadius / innerCircleCount;
- let uvRadius2 = (iCircle + 1) * effectRadius / innerCircleCount;
- //テクスチャのUV座標と描画先のXY座標を変化させることでゆらぎを表現する
- let xyRadius1t = iCircle * effectRadius / innerCircleCount;
- let xyRadius2t = (iCircle + 1) * effectRadius / innerCircleCount;
- let xyRadius1 = xyOldRadius;
- let xyBias = (xyRadius2t - xyRadius1t) / 2 + (xyRadius2t - xyRadius1t) * sin(frame*16 + (iCircle * 360 / innerCircleCount)) / 4;
- let xyRadius2 = xyRadius2t + xyBias / ((innerCircleCount - iCircle + 1) / 2);
- xyOldRadius = xyRadius2;
- if(iCircle == innerCircleCount - 1)
- {
- xyRadius2 = uvRadius2;
- }
- //上記の頂点座標を設定
- let leftBias = enemyX + frameLeft;
- let topBias = enemyY + frameTop;
- ObjPrim_SetVertexPosition(objInnerC, vertexIndex , leftBias + xyRadius1 * cos(angle1), topBias + xyRadius1 * sin(angle1), 0);
- ObjPrim_SetVertexPosition(objInnerC, vertexIndex+1, leftBias + xyRadius2 * cos(angle1), topBias + xyRadius2 * sin(angle1), 0);
- ObjPrim_SetVertexPosition(objInnerC, vertexIndex+2, leftBias + xyRadius1 * cos(angle2), topBias + xyRadius1 * sin(angle2), 0);
- ObjPrim_SetVertexPosition(objInnerC, vertexIndex+3, leftBias + xyRadius1 * cos(angle2), topBias + xyRadius1 * sin(angle2), 0);
- ObjPrim_SetVertexPosition(objInnerC, vertexIndex+4, leftBias + xyRadius2 * cos(angle1), topBias + xyRadius2 * sin(angle1), 0);
- ObjPrim_SetVertexPosition(objInnerC, vertexIndex+5, leftBias + xyRadius2 * cos(angle2), topBias + xyRadius2 * sin(angle2), 0);
- ObjPrim_SetVertexUVT(objInnerC, vertexIndex , leftBias + uvRadius1 * cos(angle1), topBias + uvRadius1 * sin(angle1));
- ObjPrim_SetVertexUVT(objInnerC, vertexIndex+1, leftBias + uvRadius2 * cos(angle1), topBias + uvRadius2 * sin(angle1));
- ObjPrim_SetVertexUVT(objInnerC, vertexIndex+2, leftBias + uvRadius1 * cos(angle2), topBias + uvRadius1 * sin(angle2));
- ObjPrim_SetVertexUVT(objInnerC, vertexIndex+3, leftBias + uvRadius1 * cos(angle2), topBias + uvRadius1 * sin(angle2));
- ObjPrim_SetVertexUVT(objInnerC, vertexIndex+4, leftBias + uvRadius2 * cos(angle1), topBias + uvRadius2 * sin(angle1));
- ObjPrim_SetVertexUVT(objInnerC, vertexIndex+5, leftBias + uvRadius2 * cos(angle2), topBias + uvRadius2 * sin(angle2));
- }
- }
- //--------------------------------
- //円外~エフェクト枠
- //揺らいでいる円の外側から矩形までを埋める
- ObjRender_SetPosition(objOuterC, -frameLeft, -frameTop, 0);
- ascent(let iPosO in 0 .. circleVertexCount)
- {
- let angle1 = iPosO * (360 / circleVertexCount);
- let angle2 = (iPosO + 1) * (360 / circleVertexCount);
- let rectX = 0;
- let rectY = 0;
- if(angle1 >= 0 && angle1 < 90)
- {
- rectX = circleRight;
- rectY = circleBottom;
- }
- else if(angle1 >= 90 && angle1 < 180)
- {
- rectX = circleLeft;
- rectY = circleBottom;
- }
- else if(angle1 >= 180 && angle1 < 270)
- {
- rectX = circleLeft;
- rectY = circleTop;
- }
- else if(angle1 >= 270 && angle1 < 360)
- {
- rectX = circleRight;
- rectY = circleTop;
- }
- let vertexIndex = iPosO * 3;
- ObjPrim_SetVertexPosition(objOuterC, vertexIndex, enemyX + effectRadius * cos(angle1) + frameLeft, enemyY + effectRadius * sin(angle1) + frameTop, 0);
- ObjPrim_SetVertexPosition(objOuterC, vertexIndex+1, rectX, rectY, 0);
- ObjPrim_SetVertexPosition(objOuterC, vertexIndex+2, enemyX + effectRadius * cos(angle2) + frameLeft, enemyY + effectRadius * sin(angle2) + frameTop, 0);
- ObjPrim_SetVertexUVT(objOuterC, vertexIndex, enemyX + effectRadius * cos(angle1) + frameLeft, enemyY + effectRadius * sin(angle1) + frameTop);
- ObjPrim_SetVertexUVT(objOuterC, vertexIndex+1, rectX, rectY);
- ObjPrim_SetVertexUVT(objOuterC, vertexIndex+2, enemyX + effectRadius * cos(angle2) + frameLeft, enemyY + effectRadius * sin(angle2) + frameTop);
- }
- //--------------------------------
- //エフェクト枠外
- //エフェクト枠外の背景を描画する
- ObjSpriteList2D_ClearVertexCount(objOuterE);
- ObjRender_SetPosition(objOuterE, -frameLeft, -frameTop, 0);
- ObjSpriteList2D_SetSourceRect(objOuterE, frameLeft, frameTop, frameRight, circleTop + 1);
- ObjSpriteList2D_SetDestRect(objOuterE, frameLeft, frameTop, frameRight, circleTop + 1);
- ObjSpriteList2D_AddVertex(objOuterE);
- ObjSpriteList2D_SetSourceRect(objOuterE, frameLeft, circleTop, circleLeft + 1, circleBottom);
- ObjSpriteList2D_SetDestRect(objOuterE, frameLeft, circleTop, circleLeft + 1, circleBottom);
- ObjSpriteList2D_AddVertex(objOuterE);
- ObjSpriteList2D_SetSourceRect(objOuterE, circleRight, circleTop, frameRight, circleBottom);
- ObjSpriteList2D_SetDestRect(objOuterE, circleRight, circleTop, frameRight, circleBottom);
- ObjSpriteList2D_AddVertex(objOuterE);
- ObjSpriteList2D_SetSourceRect(objOuterE, frameLeft, circleBottom, frameRight, frameBottom);
- ObjSpriteList2D_SetDestRect(objOuterE, frameLeft, circleBottom, frameRight, frameBottom);
- ObjSpriteList2D_AddVertex(objOuterE);
- frame++;
- yield;
- }
- //エフェクト用オブジェクト削除
- Obj_Delete(objInnerC);
- Obj_Delete(objOuterC);
- Obj_Delete(objOuterE);
- Obj_Delete(objShadow);
- ClearInvalidRenderPriority();
- }
- // speed, mx, and my variables are used to make effect objects move across the screen
- task MoonCharge(tobj,xpos,ypos,angle,speed,color){
- let mx = speed*cos(angle);
- let my = speed*sin(angle);
- let alpha = 20;
- let s = 2;
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let angleX = rand(0,360);
- let angleY = rand(0,360);
- let angleZ = rand(0,360);
- let Xrot = rand(-3,3);
- let Yrot = rand(-3,3);
- let Zrot = rand(-3,3);
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"loading.png");
- ObjSprite2D_SetSourceRect(obj,0, 128, 60, 188);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- Obj_SetRenderPriorityI(obj,60);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetPosition(obj,xpos,ypos,0);
- ObjRender_SetAngleZ(obj,angle);
- while(!Obj_IsDeleted(obj)&&alpha<192){
- ObjRender_SetAlpha(obj,alpha);
- ObjRender_SetScaleXYZ(obj,s,s,s);
- ObjRender_SetAngleXYZ(obj,angleX,angleY,angleZ);
- angleX+=Xrot;
- angleY+=Yrot;
- angleZ+=Zrot;
- alpha+=rand(5,6.4);
- s-=0.04;
- ObjRender_SetPosition(obj,ObjRender_GetX(obj)+mx,ObjRender_GetY(obj)+my,0);
- wait(1);
- }
- Obj_Delete(obj);
- }
- task MoonCharge2(tobj,xpos,ypos,angle,speed,color){
- let mx = speed*cos(angle);
- let my = speed*sin(angle);
- let alpha = 200;
- let s = 1.1;
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- let angleX = rand(0,360);
- let angleY = rand(0,360);
- let angleZ = rand(0,360);
- let Xrot = rand(-3,3);
- let Yrot = rand(-3,3);
- let Zrot = rand(-3,3);
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"loading.png");
- ObjSprite2D_SetSourceRect(obj,0, 128, 60, 188);
- ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
- ObjRender_SetColor(obj,color[0],color[1],color[2]);
- Obj_SetRenderPriorityI(obj,60);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetPosition(obj,xpos,ypos,0);
- ObjRender_SetAngleZ(obj,angle);
- while(!Obj_IsDeleted(obj)&&alpha>0){
- ObjRender_SetAlpha(obj,alpha);
- ObjRender_SetScaleXYZ(obj,s,s,s);
- ObjRender_SetAngleXYZ(obj,angleX,angleY,angleZ);
- angleX+=Xrot;
- angleY+=Yrot;
- angleZ+=Zrot;
- alpha-=rand(5,7);
- s+=0.04;
- ObjRender_SetPosition(obj,ObjRender_GetX(obj)+mx,ObjRender_GetY(obj)+my,0);
- wait(1);
- }
- Obj_Delete(obj);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement