キャラの速度

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アイス

キャラの速度

#1

投稿記事 by アイス » 16年前

キャラの移動制御のところで止まってるんですが
説明が不十分でよくわかりません。

void ch_move(){//キャラクタの移動制御
int i,sayu_flag=0,joge_flag=0;
double x,y,mx,my,naname=1;
double move_x[4]={-4.0,4.0,0,0},move_y[4]={0,0,4.0,-4.0};//{左,右,下,上}のスピード
int inputpad[4];
inputpad[0]=CheckStatePad(configpad.left); inputpad[1]=CheckStatePad(configpad.right);
inputpad[2]=CheckStatePad(configpad.down); inputpad[3]=CheckStatePad(configpad.up);

if(CheckStatePad(configpad.left)>0)//左キーが押されていたら
ch.img+=4*2;//画像を左向きに
else if(CheckStatePad(configpad.right)>0)//右キーが押されていたら
ch.img+=4*1;//画像を右向きに

for(i=0;i<2;i++)//左右分
if(inputpad>0)//左右どちらかの入力があれば
sayu_flag=1;//左右入力フラグを立てる
for(i=2;i<4;i++)//上下分
if(inputpad>0)//上下どちらかの入力があれば
joge_flag=1;//上下入力フラグを立てる
if(sayu_flag==1 && joge_flag==1)//左右、上下両方の入力があれば斜めだと言う事
naname=sqrt(2.0);//移動スピードを1/ルート2に

for(int i=0;i<4;i++){//4方向分ループ
if(inputpad>0){//i方向のキーボード、パッドどちらかの入力があれば
x=ch.x , y=ch.y;//今の座標をとりあえずx,yに格納
mx=move_x; my=move_y;//移動分をmx,myに代入
if(CheckStatePad(configpad.slow)>0){//低速移動なら
mx=move_x/3; my=move_y/3;//移動スピードを1/3に
}
x+=mx/naname , y+=my/naname;//今の座標と移動分を足す
if(!(x<10 || x>FIELD_MAX_X-10 || y<5 || y>FIELD_MAX_Y-5)){//計算結果移動可能範囲内なら
ch.x=x , ch.y=y;//実際に移動させる
}
}
}
}

結局のところ
キャラのスピードのあげるのはどこをいじればいいんでしょうか?(低速移動も)

array

Re:キャラの速度

#2

投稿記事 by array » 16年前

double move_x[4]={-4.0,4.0,0,0},move_y[4]={0,0,4.0,-4.0};//{左,右,下,上}のスピード

ここだと思います

やそ

Re:キャラの速度

#3

投稿記事 by やそ » 16年前

arrayさんの指摘した場所の数値を好きなようにいじってテストしてみればわかると思うよ。

また、低速移動は

if(CheckStatePad(configpad.slow)>0){//低速移動なら
mx=move_x/3; my=move_y/3;//移動スピードを1/3に

で行っていると思います。(コメント読めばわかるよね)

1/3のスピード(移動幅)が「違うなぁ~」と思えばそのあたりを修正してTRY&ERRORあるのみです。

Dixq (管理人)

Re:キャラの速度

#4

投稿記事 by Dixq (管理人) » 16年前

本来なら、4.0や/3の部分のマジックナンバーはdefineで定義した方がいいと思いますので、
適当な名前で定義してみて下さい。

いちいちどの辺か悩まなくても定義を変えるだけで移動スピードが変わるようになると思います。

アイス

Re:キャラの速度

#5

投稿記事 by アイス » 16年前

色々アドバイスどうもです。
おかげで無事に速さ調節できました。
ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る