SOFTドット絵エディタ「EDGE2」、MIDI音楽編集ソフト「Domino」、楽曲などを配布している個人サイトです。演出・エフェクト編サンプルコードのダウンロードでは、まずサンプルコードをダウンロードし、解凍してください。C++でプロジェクトファイルを開いてください(「effec_02.dsw」をダブルクリックすれば開けます)。圧縮ファイルに含まれる「effec_02.exe」をダブルクリックし、実行してみてください(何かキーを押すと終了します)。?画面が切り替わり、うねうね揺れた地球の画像が3パターン表示されると思います。いうわけで今回は、サインカーブを使用して画像を揺らす方法ついて説明したいと思います。三角関数というと、なんだか難しく考える人もいるかもしれませんが、今回は別にムツカシー計算をするわけではありません。右の図を見てください。ありますが、サインカーブっぽいものです。ここでまず覚えて欲しいのは、sin関数は「波形」という事と、最大値・最小値が+1・-1という事です。それから前にも書きましたが、C言語の場合sin関数の引数の単位はラジアンなので、360度=2π1度=π/180となります(今回はあんまり関係ありませんが)。地球を歪ませるさて、ここらでサンプルプログラムを見てみましょう。今回は、画面中に3パターンの歪む地球を表示させています。第10回」のサンプルコードを使用しています。Quit();TranslateMessage(&msg);DispatchMessage(&msg);}}while(timeGetTime()<tim+16);//1000/60=16.666(秒間60回更新予定)}return(FALSE);}順番に説明していきましょうか。パレットを読み込み、地球の画像をlpWorkサーフェイスへ読み込んでおきます。//パレット設定LoadPalette("earth.bmp");//ビットマップを作業用サーフェイスへ読み込むLoadBitmap(lpWork,"earth.bmp",60,15,200,210);ここで、画像は320×240内の中央へ来るように、読み込んだ画像の転送先をずらしています(60,15)。(解りやすくなると思ったので(^^;))そんでもって今日の本題の部分//ゆらすパターン1SetClipArea(0,0,320,240);for(i=0;i<240;i++)BltClip(lpBack,int(sin((count+i)/10.f)*width),i,320,1,lpWork,0,i,FALSE);1つ前の段落でサインカーブについて触れましたが、ここではサインカーブの図を90度右へ回転させたような感じで見ると直ぐに解ると思います(下図参照)。ここでは画像を、ズバシュァァァ!!と薄く横に切り刻みまくり、それらを横にずらしながら置いていく感じです(謎)。毎回countをインクリメントする事で、使用する波形の「開始位置」をずらす事が出来ます。これにより、「動く」うねりを実現出来ます。・・・)/10.fと適当に割っていますが、大きな数字で割ると、波の間隔が広くなります。変数をいじってみて、「どこを変えるとどうなる」というのを試してみてください(^^;説明するより、そうした方が早いです。あと、パターン2・パターン3がありますが、これはもう説明するまでもありませんね。blockworks.このサイトについてサイトマップRSSフィード。