プロが教える店舗&オフィスのセキュリティ対策術

DXライブラリ、C++について質問です
よく、STGにありがちなShiftが押されたら移動速度を下げるというのをやりたいのですが
そこでhttps://ideone.com/qCFyhj

こういうのを書きました
僕の意識としては、ただの十字だったら各それぞれ+4でもしもSキーが押されたらそこに-2をして
ようはSキーが押されたら座標を+4ではなく+2、2分の1にしたいということです

いちおう、ただの入力だったらしっかり等速でうごいてくれます
ですがSキーを押してもスピードが全く変わりません
ご教授お願いします

A 回答 (1件)

DXライブラリが複数キーの押下を正常に認識できるのか、とか


キーボードがその組み合わせの複数キーの入力がかのうなのか、とかはクリアしているものとします。

> if (CheckHitKey(KEY_INPUT_LEFT) == 1) x -= 4;
> if (CheckHitKey(KEY_INPUT_S) == 1) x += 2;
> if (CheckHitKey(KEY_INPUT_RIGHT) == 1) x += 4;
> if (CheckHitKey(KEY_INPUT_S) == 1) x -= 2;
> if (CheckHitKey(KEY_INPUT_UP) == 1) y -= 4;
> if (CheckHitKey(KEY_INPUT_S) == 1) y += 2;
> if (CheckHitKey(KEY_INPUT_DOWN) == 1) y += 4;
> if (CheckHitKey(KEY_INPUT_S) == 1) y -= 2;

無駄なブロックはカットしました。
Sキー押下が検出されると…
xに2を加算してxから2を減算して、yに2を加算してyから2を減算します。
結果として無事増減なしになります。

ブロックで囲っていようが、インデントしていようが、
> if (CheckHitKey(KEY_INPUT_LEFT) == 1) x -= 4;
の条件式の結果は「x -= 4;」で完結しています。

if (CheckHitKey(KEY_INPUT_LEFT) == 1)
   {
      x -= 4;
if (CheckHitKey(KEY_INPUT_S) == 1) x += 2;
   }
としたかったのではありませんか?
    • good
    • 0
この回答へのお礼

その通りです!
気づけば簡単なことでした.....
本当に有難うございます!

お礼日時:2016/08/22 14:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!