参考サイトより提示コードのコメント内部のようにルート2分の1倍した数値を掛け算しているのですがこれは正しいのでしょうか?実際斜め移動しているときとそうじゃない時を実装してみましたがちょっと速度が違いすぎる気がします。これは間違えているのでしょうか?
参考サイト: https://bituse.info/game/19
cpp
1#include "Game.hpp" 2#include "Entry.hpp" 3#include "Input.hpp" 4 5#include <iostream> 6 7#include "DxLib.h" 8 9 10Game::Game(Entry* entry) 11{ 12 owner = entry; //Entry クラス 13 14 15 16 m_handlePlayer_ = LoadGraph("Assets/Player.png"); //プレイヤー 17 playerPosition = glm::ivec2(100,100); 18} 19 20 21//計算 22void Game::Update() 23{ 24#define SPEED 10 25 26 bool rl = false; 27 bool ud = false; 28 glm::ivec2 speed = glm::ivec2(0, 0); 29 if (owner->input->getKeyDownHold(KEY_INPUT_RIGHT) > 0) 30 { 31 speed.x = +SPEED; 32 rl = true; 33 } 34 else if (owner->input->getKeyDownHold(KEY_INPUT_LEFT) > 0) 35 { 36 speed.x = -SPEED; 37 rl = true; 38 } 39 else { 40 rl = false; 41 speed.x = 0; 42 43 } 44 45 if (owner->input->getKeyDownHold(KEY_INPUT_UP) > 0) 46 { 47 speed.y = -SPEED; 48 ud = true; 49 } 50 else if (owner->input->getKeyDownHold(KEY_INPUT_DOWN) > 0) 51 { 52 speed.y = +SPEED; 53 ud = true; 54 } 55 else { 56 speed.y = 0; 57 58 ud = false; 59 } 60 61//////////////////////////////////////////////////////////////////////////////////////// 62 //斜め移動 63 if (ud == true && rl == true) 64 { 65 playerPosition.x += speed.x * 0.70710678118; 66 playerPosition.y += speed.y * 0.70710678118; 67 } 68 else { 69 //そうじゃないとき 70 playerPosition.x += speed.x; 71 playerPosition.y += speed.y; 72 } 73//////////////////////////////////////////////////////////////////////////////////////// 74 75 76} 77 78//描画 79void Game::Draw() 80{ 81 DrawGraph(playerPosition.x, playerPosition.y, m_handlePlayer_, TRUE); 82} 83 84 85Game::~Game() 86{ 87 88} 89
仕様を考えた人が仕様に従ってご自身で書いたんだったら正しいのではないでしょうか。
仕様ではどうなっているのですか。
削除
数学を勉強しましょう。
結果だけ貰ってコピペしてるから何も身に付かないのです。
いやちゃんと考えて自分で記述しました。
自分でロジック考えてデバッグもしてるなら、そもそもこんな質問出てこないでしょう。
このコードを考えられる頭があるなら出てこない質問がたくさん。1考えて9誰かに埋めてもらう行為は「考えた」とは言いません。
> ちょっと速度が違いすぎる気がします
ふわっとした感想で言われても,何も伝わらない.あなたにしか動作は見れないのだし.
問題を定量的に示せないのか?
例えば,斜め移動時と斜めじゃない移動時のplayerPositionの時系列の値を示すとか.
キーの入力と速度の算出と状態の更新が入り混じっているため、見通しが悪くバグが入りやすい作りだと思います。まずはこれらを別々に処理するように構成を見直す事をお奨めします。
回答1件
あなたの回答
tips
プレビュー