理想は添付画像のようなレーザーを作りたいと思っているのですが、
私の腕がまだまだ未熟なので微妙なレーザーが出来上がります・・・;;、
加算合成描画でレーザー画像を等間隔で配置していき、
画像と画像の中間にも画像を配置し、レーザーが濃くなるようにしているのですが、なんか出来がイマイチです
ソースはこんな感じです
void C_Base :: Move(){
int XX = CEN_X, YY = CEN_Y;
static double ang;
static int count = 0, num = 0;
SetDrawMode( DX_DRAWMODE_BILINEAR );
SetDrawBlendMode( DX_BLENDMODE_ADD, 255 );
DrawRotaGraph( (int)XX, (int)YY, Rand( 0.6, 0.8 ), 0, Spark, true );
if( count < 60 ){
if( count == 1 ){
ang = Rand(0, 360);
}
DrawLine( XX, YY, (int)(XX + ( 1000 * cos2(ang) ) ), (int)(YY + ( 1000 * sin2(ang) )), White );
}
else if( count >= 60 ){
if( count == 60 ){
PlaySoundMem( RaySE, DX_PLAYTYPE_BACK );
}
for( int i=1 ; i<=num ; i++ ){
if( i == num ){
DrawRotaGraph( (int)(XX + ( (i * 48) * cos2(ang) ) ), (int)(YY + ( (i * 48) * sin2(ang) )), 0.5, 0, Spark, true );
}
else{
SetDrawBlendMode( DX_BLENDMODE_ADD, 150 );
DrawRotaGraph( (int)(XX + ( (i * 48) * cos2(ang) ) ), (int)(YY + ( (i * 48) * sin2(ang) )), 1.0, DegRad(ang), Ray[Rand(0,0)], true );
DrawRotaGraph( (int)(XX + ( (i * 64) * cos2(ang) ) ), (int)(YY + ( (i * 64) * sin2(ang) )), 1.0, DegRad(ang), Ray[Rand(0,0)], true );
}
}
num++;
}
if( count > 150 ){
count = 0;
num = 0;
}
count += 1;
}
パッと出現するレーザーではなく、射出系(段々長くなる)レーザーが作りたいのです。
レーザーの作り方のコツやテクニックを教えてくださると嬉しいです。