質問です。アクションゲームを作っていてキャラクターの画像を
右キーで右に回転 左キーで左に回転 上キーで向いている角度方向に直進
という動きをさせたいのですが、回転はするのですが直進しません。
DrawRotaGraph関数の引数に
x座標に[現在のx座標 + 上キーフラグ * cos(角度) * 速さ]
y座標に[現在のy座標 + 上キーフラグ * sin(角度) * 速さ]
みたいな感じで書いたのですが、これではだめでした。
詳しい方教えてください。よろしくお願いします。
無題
-
りょうちん
Re:無題
返信ありがとうございます。まずタイトルが無題だったに気づきませんでした、ごめんなさい。
分かりにくい質問になってしまったのも申し訳ありませんでした。
理由はわからないのですが、問題解決できました。
勉強のため、よろしければなぜこれでできたのか教えてください(泣
(上キーを押さなくても自動で進むように変更しました)
こちらのHPを参考にして
これを
はじめ、cosやsinの値は1未満の数値だからDouble型をInt型にしたときに0になるため、こう変更して
解決したと思ってたのですが。よく考えたらch.zの初期値0ならばcosの値1になるはずだから
変にでも動くはずですよね・・。という事でなぜ解決したかわかりませんでした。
分かりにくい質問になってしまったのも申し訳ありませんでした。
理由はわからないのですが、問題解決できました。
勉強のため、よろしければなぜこれでできたのか教えてください(泣
(上キーを押さなくても自動で進むように変更しました)
こちらのHPを参考にして
if(KeyBuf[ KEY_INPUT_RIGHT] == 1){
ch.z=ch.z+10;
}
if(KeyBuf[KEY_INPUT_LEFT] == 1 ){
ch.z=ch.z-10;
}
rawRotaGraph((int)ch.x+cos(PI*(ch.z*0.001)),(int)ch.y+sin(PI*(ch.z*0.001)),
1 ,PI*(ch.z*0.001)+PI/2, image, TRUE ) ;
こんな感じで組んだところ回転はするのですが、直進しませんでした。これを
if(KeyBuf[ KEY_INPUT_RIGHT] == 1){
ch.z=ch.z+10;
}
if(KeyBuf[KEY_INPUT_LEFT] == 1 ){
ch.z=ch.z-10;
}
ch.x=ch.x+cos(PI*(ch.z*0.001));
ch.y=ch.y+sin(PI*(ch.z*0.001));
DrawRotaGraph((int)ch.x,(int)ch.y, 1 ,PI*(ch.z*0.001)+PI/2, image, TRUE ) ;
に変更したらうまくいきました。ch.zは0で初期化してます。はじめ、cosやsinの値は1未満の数値だからDouble型をInt型にしたときに0になるため、こう変更して
解決したと思ってたのですが。よく考えたらch.zの初期値0ならばcosの値1になるはずだから
変にでも動くはずですよね・・。という事でなぜ解決したかわかりませんでした。