質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

568閲覧

速度ゲージが突き抜ける

kinako0316

総合スコア1

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2023/05/14 06:21

編集2023/05/15 18:29

実現したいこと

速度のゲージを枠から突き抜けないようにしたい

前提

速度のゲージが突き抜けます。バックをしたら後ろに突き抜けます。どうしてこうなるか教えてください。
イメージ説明

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード //****************************************************************************** // // // 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/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/05/14 07:29

言語はなに使ってるんでしょう そして、コードは画像ではなくテキストで提示しましょう
kinako0316

2023/05/14 08:04

C++を使っています。初めて使ったので画像で送ってしまいました。すみません。
guest

回答2

0

speedのMAXって40?
796*speed って3万くらいにならんか

投稿2023/05/15 09:29

red_snow

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if (speed>SPEED_MAX) { speed = SPEED_MAX; } if (speed<SPEED_MIN) { speed = SPEED_MIN; }

突き抜け防止↑の(コード上の)位置は適切か?

投稿2023/05/14 11:38

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問