実現したいこと
速度のゲージを枠から突き抜けないようにしたい
前提
速度のゲージが突き抜けます。バックをしたら後ろに突き抜けます。どうしてこうなるか教えてください。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード //****************************************************************************** // // // scene_game // // //****************************************************************************** //----< インクルード >----------------------------------------------------------- #include "all.h" //------< 定数 >---------------------------------------------------------------- #define SPEED_MAX 40.0f #define SPEED_MIN -10.0f //------< 変数 >---------------------------------------------------------------- int game_state = 0; // 状態 int game_timer = 0; // タイマー // TODO:01 スプライトの用意 Sprite* sprCar, * sprCourse; // TODO:03 位置用の変数を用意 float carPosX, carPosY; //TODO:05 角度用の変数を用意 float angle; // TODO:08 速度用の変数を用意 float speed; // 初期設定 void game_init() { game_state = 0; game_timer = 0; } // 更新処理 void game_update() { using namespace input; switch (game_state) { case 0: //////// 初期設定 //////// sprCar = sprite_load(L"./Data/Images/up.png"); sprCourse = sprite_load(L"./Data/Images/course.png"); /*fallthrough*/ case 1: //////// パラメータの設定 //////// carPosX = 0; carPosY =0; angle = ToRadian(0); speed = 0; // ブレンドモードの設定 GameLib::setBlendMode(Blender::BS_ALPHA); game_state++; /*fallthrough*/ case 2: //////// 通常時 //////// debug::setString("[Operation]"); debug::setString("Rotate : A, D"); debug::setString("Accel : Up Arrow"); debug::setString("Brake : Down Arrow"); debug::setString(""); // TODO:06 A,Dキーで旋回 if (STATE(0) & PAD_LEFT) { angle += ToRadian(-3); } if (STATE(0) & PAD_RIGHT) { angle += ToRadian(3); } debug::setString("TODegree(angle):%f", ToDegree(angle)); // TODO:09 アクセル・ブレーキの実装 if (STATE(0) & PAD_TRG1) { speed += 0.1f; if (speed>SPEED_MAX) { speed = SPEED_MAX; } } else if (STATE(0) & PAD_TRG2) { speed +=-0.2f; if (speed<SPEED_MIN) { speed = SPEED_MIN; } } else { speed *= 0.99f; } carPosX += sinf(angle) * speed; carPosY += -cosf(angle) * speed; debug::setString("speed%f", speed); break; } game_timer++; } // 描画処理 void game_render() { GameLib::clear(0.2549f, 0.5569f, 0.1020f); // TODO:10 コースの描画 sprite_render(sprCourse, -carPosX, -carPosY, 2.0f, 2.0f, 0, 0, 3840, 1920, 1920, 960, ToRadian(0)); // TODO:11 車の描画 sprite_render(sprCar, SCREEN_W * 0.5f, SCREEN_H * 0.5f, 1.0f, 1.0f, 0, 0, 256, 256, 128, 128, angle); debug::setString("carPosX:%f", carPosX); debug::setString("carPosY:%f", carPosY); // TODO:12 スピードゲージの描画 primitive::rect(70, 20, 800, 100, 0, 0, ToRadian(0), 0, 0, 0, 0.4f); primitive::rect(72, 22, 796*speed , 96, 0, 0, ToRadian(0), 1, 0, 0, 0.6f); } // 終了処理 void game_deinit() { safe_delete(sprCar); safe_delete(sprCourse); } ### 試したこと SPEED_MAXをいれてみたが、逆に突き抜けたままになった。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。