キャラに付随しているオプションの事なのですが、
通常時と低速時に位置が変わる際に移動する間も描写したいのですが
どのようにすればいいでしょうか?
オプションの動作
Re:オプションの動作
シフトキーが押されている時間を使って、通常→スローの場合の描写はうまくいきました。
ありがとうございます!
しかし、スロー→通常の際にはシフトキーは押されていないため、
何かうまくカウントを取る方法がないでしょうか?
もしくは、オプションの現在位置を示していると思われるsx,syを用いて
sx++;
sy++;
などのような計算で、目標座標との差分をなくすように変化させようと思ったのですが、
エラーが出てしまい困っております。
ありがとうございます!
しかし、スロー→通常の際にはシフトキーは押されていないため、
何かうまくカウントを取る方法がないでしょうか?
もしくは、オプションの現在位置を示していると思われるsx,syを用いて
sx++;
sy++;
などのような計算で、目標座標との差分をなくすように変化させようと思ったのですが、
エラーが出てしまい困っております。
Re:オプションの動作
私の使っている方法だと自機の構造体に
unsigned char Shift;//低速移動成分
のような変数を追加します
オプションの移動を10カウントで行うとして
Shiftが0~10まで変化するようにします
0の時は通常
10の時は低速
1~9の時は変化中です
龍神録などで入力状態を取得している方法はよく知りませんが
ゲームプログラミングの館で言うと
if( Key[KEY_INPUT_LSHIFT]>0 ){if( Player.Shift<10 )++Player.Shift;}//低速移動成分を増やす
else{if( Player.Shift>0 )--Player.Shift;}//低速移動成分を減らす
こんな感じです
通常時の座標に低速時の座標までの距離を10で割ってShiftをかけた値を足せば移動すると思います
しかし等速で移動すると不自然なので物理的移動を使った方が良いと思います
unsigned char Shift;//低速移動成分
のような変数を追加します
オプションの移動を10カウントで行うとして
Shiftが0~10まで変化するようにします
0の時は通常
10の時は低速
1~9の時は変化中です
龍神録などで入力状態を取得している方法はよく知りませんが
ゲームプログラミングの館で言うと
if( Key[KEY_INPUT_LSHIFT]>0 ){if( Player.Shift<10 )++Player.Shift;}//低速移動成分を増やす
else{if( Player.Shift>0 )--Player.Shift;}//低速移動成分を減らす
こんな感じです
通常時の座標に低速時の座標までの距離を10で割ってShiftをかけた値を足せば移動すると思います
しかし等速で移動すると不自然なので物理的移動を使った方が良いと思います