TNTさん!ありがとうございました!
TNTさんのプログラムを参考に腕の回転と、弾の発射を考えてみました。↓
//腕の回転
void Player_Show( int pj_flag , int myship_x )
{
static int Arrow_Angle;
double PI=3.14; // 円周率設定(double)Mouse_X-myship.x+105
//static double rad=PI*2/1; // 角度変数
if(myship.muki==0 )
{
if( key[KEY_INPUT_UP]==1 )
Arrow_Angle -= 1;
if( key[KEY_INPUT_DOWN]==1 )
Arrow_Angle += 1;
}
if( myship.muki==1 )
{
if( key[KEY_INPUT_UP]==1 )
Arrow_Angle += 1;
if( key[KEY_INPUT_DOWN]==1 )
Arrow_Angle -= 1;
}
if(Arrow_Angle <=-80)
Arrow_Angle =-80;
if(Arrow_Angle >=80)
Arrow_Angle =80;
myship_rad=(double)Arrow_Angle * PI / 180;
if( pj_flag==0 ) //歩行状態である
myship.body_img=&( myship.image[myship.muki][(myship_x%32)/2] ); //現在の方向とx座標にあったボディー画像を取得
else //飛行状態である
myship.body_img=&( myship.image[myship.muki][17] ); //方向にあったボディー画像を取得
myship.hand_img1=&( myship.image[myship.muki][18] ); //方向にあった腕の画像を取得
myship.hand_img2=&( myship.image[myship.muki][19] ); //
if( weapon_id==0 )
{
// 腕とボディーの表示
if( myship.muki==0 )
{
DrawRotaGraph2( myship.x+75 , myship.y+40 , 75 , 20 , 1 , myship_rad , *myship.hand_img1 , TRUE );
DrawGraph( myship.x , myship.y , *myship.body_img , TRUE );
DrawGraph( myship.x , myship.y+15 , *myship.hand_img2 , TRUE );
}
if( myship.muki==1 )
{
DrawGraph( myship.x , myship.y+15 , *myship.hand_img1 , TRUE );
DrawGraph( myship.x , myship.y , *myship.body_img , TRUE );
DrawRotaGraph2( myship.x+75 , myship.y+35 , 75 , 20 , 1 , myship_rad , *myship.hand_img2 , TRUE );
}
}
if( weapon_id==1 )
{
// 腕とボディーの表示
if( myship.muki==0 )
{
DrawGraph( myship.x , myship.y+15 , *myship.hand_img1 , TRUE );
DrawGraph( myship.x , myship.y , *myship.body_img , TRUE );
DrawRotaGraph2( myship.x+75 , myship.y+35 , 75 , 20 , 1 , myship_rad , *myship.hand_img2 , TRUE );
}
if( myship.muki==1 )
{
DrawRotaGraph2( myship.x+75 , myship.y+30 , 75 , 20 , 1 , myship_rad , *myship.hand_img1 , TRUE );
DrawGraph( myship.x , myship.y , *myship.body_img , TRUE );
DrawGraph( myship.x , myship.y+15 , *myship.hand_img2 , TRUE );
}
}
if( weapon_id==2 )
{
// 腕とボディーの表示
DrawGraph( myship.x , myship.y+15 , *myship.hand_img1 , TRUE );
DrawGraph( myship.x , myship.y , *myship.body_img , TRUE );
DrawGraph( myship.x , myship.y+15 , *myship.hand_img2 , TRUE );
}
}
//弾の発射
static int i , NewSpace=0 , OldSpace=0 , InputSpace=0 ,rad ;
int *myshotbulletimg;
if( key[KEY_INPUT_SPACE]==1 )
NewSpace=1;
else
NewSpace=0;
if( OldSpace==0 && NewSpace==1 )
InputSpace=1;
else
InputSpace=0;
if( InputSpace==1 )
{
for( i=0 ; i<20 ; i++ )
{
if( myshot[i].shotbulletflag==0 )
{
myshot[i].sb_speedx=cos((double)rad)*10;
myshot[i].sb_speedx=sin((double)rad)*10;
myshot[i].shotbulletx=myship.x+70;
myshot[i].shotbullety=myship.y+35;
myshot[i].shotbulletflag=1;
break;
}
}
}
OldSpace=NewSpace;
for( i=0 ; i<20 ; i++)
{
myshotbulletimg=&(myshot[i].shotbullet);
if( myshot[i].shotbulletflag==1 )
{
myshot[i].shotbulletx+=myshot[i].sb_speedx;
myshot[i].shotbullety+=myshot[i].sb_speedy;
DrawGraph( myshot[i].shotbulletx , myshot[i].shotbullety , *myshotbulletimg ,TRUE);
DrawFormatString(0,0,GetColor(255,0,0),"%d %d",cos(myship_rad)*10,sin(myship_rad)*10);
if( myshot[i].shotbullety > 600 || myshot[i].shotbullety < -120 || myshot[i].shotbulletx >780 ||myshot[i].shotbulletx < -160 )
myshot[i].shotbulletflag=0;
}
}
}
ここで、弾の発射だけ、思った方向に飛ばないのですが、よろしければ、おしえていただけますか?
何度もすみません!(>_<)