提示コードですが三平方の定理を使うやり方とcos sin 関数を使う方法の二つの方法で斜めに移動する際の移動が速くなるという現象を解消したいのですがどっちが正しいのでしょか?またこのコードは正しいのでしょうか?
cpp
1 2// ##################################### 更新 ##################################### 3void Game::Update() 4{ 5 6 //glm::vec2 speed = glm::vec2(4, 3); 7 8 float dx = speed.x / std::sqrt((speed.x * speed.x) + (speed.y * speed.y)); 9 float dy = speed.y / std::sqrt((speed.x * speed.x) + (speed.y * speed.y)); 10 11 12 13 14 15 16 17 std::cout <<"aaa "<< speed.x * cos(PI / 6) << std::endl; 18 std::cout <<"aaa "<< speed.y * sin(PI / 6) << std::endl; 19 20 std::cout << speed.x * dx << std::endl; 21 std::cout << speed.y * dy << std::endl; 22 std::cout << std::endl; 23 24 25} 26
書いてみたコードで質問者さんの期待通りになっているのなら、何も問題はないのでは?
これはどっちが正解なのでしょうか?値を表示させましたがわかりません
どっちも正解です
それで実際に実装してみて、あなたが見ていい方を正解としましょう
正しいかどうかは質問者さんのアプリに組み込んでみて質問者さんの期待通りに動いているかどうかで判断してください。要件があいまいで、他人には判断できません。
もし、質問者さんにとって正しい結果が得られていないなら、もっと問題を説明してください。
・「速くなる」というのは何に比べて速いのか
・質問者さんはどういう結果が正しいと思うのか
・コード中の speed.x speed.y dx dy とは何か
そもそも何をしたいのかがわからんのに,「合ってるか?」と問われても困る.
(ぱっと見で,意味不明な演算ではある気がするが)
エスパー質問例「ゲームのキャラクターを左右に動かすときは (±N, 0)、上下に動かすときは (0, ±N) のベクトルを加算しています。斜めに移動するときに (±N, ±N) のベクトルで移動すると上下左右に比べて移動距離が大きすぎるのですが、上下左右と同じ移動距離にするにはどういうベクトルにしたらよいでしょうか?」
(おっと,今まさにそのような話とエスパーして回答したっす)
回答1件
あなたの回答
tips
プレビュー