#東方弾幕風 #Title[test4] #Text[test] #Image[] #BackGround[User] #ScriptVersion[2] script_enemy_main { let obj2=Obj_Create(OBJ_SHOT); /* 弾Aをオブジェクトとして宣言 弾Aを作成するタスクで宣言しない理由は script_enemy_main直下におくことで 全体から弾Aの情報を呼べるようにして 弾B側から弾Aの情報を確認する必要がある為。 */ @Initialize() { SetLife(1000);SetGraphicRect(64,1,127,64); LoadGraphic(GetCurrentScriptDirectory~"img\ExRumia.png"); SetMovePosition02(GetCenterX,60,60); Main;//メインタスクの実行 } @MainLoop(){SetCollisionA(GetX,GetY,32);SetCollisionB(GetX,GetY,24);yield;} @DrawLoop(){SetTexture(GetCurrentScriptDirectory~"img\ExRumia.png");DrawGraphic(GetX,GetY);} @Finalize(){DeleteGraphic(GetCurrentScriptDirectory~"img\ExRumia.png");} task Main{ loop { loop(120){yield;} let x=GetPlayerX-160; while(x40^2){ShotB(x,y);} y+=20; } x+=20; } loop(120){yield;} ShotA(GetX,GetY,rand(3,5),rand(GetAngleToPlayer-45,GetAngleToPlayer+45)); loop(120){yield;} } } task ShotA(let x,let y,let speed,let angle)//弾A(大玉) { obj2=Obj_Create(OBJ_SHOT);//弾オブジェクトを作成 Obj_SetPosition(obj2,x,y);//座標設定 Obj_SetSpeed(obj2,speed);//速度設定 Obj_SetAngle(obj2,angle);//移動角度設定 ObjShot_SetGraphic(obj2,RED03);//画像設定 while(!Obj_BeDeleted(obj2)){yield;}//削除されるまでループを実行 } task ShotB(let x,let y)//ShotAに当たったら弾を自機方向に出す弾 { let obj=Obj_Create(OBJ_SHOT);//弾オブジェクト生成 Obj_SetPosition(obj,x,y);//座標設定 ObjShot_SetGraphic(obj,AQUA01);//画像設定 ObjShot_SetDelay(obj,30);//出現ディレイ設定 loop(240)//240フレーム間ループを実行 { if(Collision_Obj_Obj(obj2,obj))//ShotAと接触時削除 { CreateShot01(x,y,3,atan2(GetPlayerY-y,GetPlayerX-x),PURPLE21,10); Obj_Delete(obj); } yield; } ObjShot_FadeDelete(obj);//ループ終了時フェードアウト } }//EndOfFile