
task ImgEffect(img,ImgX,ImgY,layer,Angle,a,b,c,d,Motion){
	let ImgObj=Obj_Create(OBJ_EFFECT);
	Obj_SetPosition(ImgObj,ImgX,ImgY);
	EffectTask(ImgObj,img,layer,Angle,a,b,c,d,Motion);
	yield;
}

task EffectTask(obj,img,layer,Angle,a,b,c,d,Motion){
	ObjEffect_SetTexture(obj,img);
	ObjEffect_SetLayer(obj,layer);
	ObjEffect_SetAngle(obj,Angle,0,0);
	ObjEffect_SetPrimitiveType(obj,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_CreateVertex(obj,4);
		loop(Motion){//(2~15)
			EffectVertex(obj,a,b,c,d);
			yield;
		}
	Obj_Delete(obj);
	yield;
}

task EffectVertex(obj,a,b,c,d){
	let GraphicXY=[a,b,c,d];
	let Vx=(GraphicXY[2]-GraphicXY[0])/2;
	let Vy=(GraphicXY[3]-GraphicXY[1])/2;
	ObjEffect_SetVertexUV(obj,0,GraphicXY[0],GraphicXY[1]);
	ObjEffect_SetVertexUV(obj,1,GraphicXY[2],GraphicXY[1]);
	ObjEffect_SetVertexUV(obj,2,GraphicXY[0],GraphicXY[3]);
	ObjEffect_SetVertexUV(obj,3,GraphicXY[2],GraphicXY[3]);
	ObjEffect_SetVertexXY(obj,0,-Vx,-Vy);
	ObjEffect_SetVertexXY(obj,1,Vx,-Vy);
	ObjEffect_SetVertexXY(obj,2,-Vx,Vy);
	ObjEffect_SetVertexXY(obj,3,Vx,Vy);
	yield;
}

task ShotTask(Obj,ObjX,ObjY,ObjAngle,ObjBullet,ObjDamage,ObjPenetration){
	Obj_SetX(Obj,ObjX);
	Obj_SetY(Obj,ObjY);
	Obj_SetAngle(Obj,ObjAngle);
	ObjShot_SetGraphic(Obj,ObjBullet);
	ObjShot_SetDamage(Obj,ObjDamage);
	ObjShot_SetPenetration(Obj,ObjPenetration);
	yield;
}