提示コードです斜め右上に移動して300移動したら逆側である斜め左下に移動して元の座標に戻るというコードなのですがなぜか左上に移動してしますこれは何かの誤差だと思うのですがどこで誤差が起きているのでしょうか?double形やfloat 型などを触りましたが治りません。
cpp
1#include "Game.hpp" 2#include "Entry.hpp" 3#include "Input.hpp" 4 5#include <iostream> 6 7#include "DxLib.h" 8 9#define PI ((double)3.14159265359) //円周率 10 11 12Game::Game(Entry* entry) 13{ 14 owner = entry; //Entry クラス 15 16 17 18 mHandlePlayer_ = LoadGraph("Assets/Player.png"); //プレイヤー 19 playerPosition = glm::ivec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2); 20} 21 22 23//計算 24void Game::Update() 25{ 26#define SPEED ((float)4.0f) 27 28 29 length += sqrt(pow(cos(PI / 4) * SPEED, 2) + pow(sin(PI / 4) * SPEED, 2)); 30 31 if (length > 300) 32 { 33 turn = !turn; 34 length = 0; 35 } 36 37 if (turn == false) 38 { 39 playerPosition.x += cos(PI / 4) * SPEED; 40 playerPosition.y += -sin(PI / 4) * SPEED; 41 } 42 else if (turn == true) 43 { 44 playerPosition.x += -cos(PI / 4) * SPEED; 45 playerPosition.y += sin(PI / 4) * SPEED; 46 } 47 48 49} 50 51//描画 52void Game::Draw() 53{ 54 DrawGraph(playerPosition.x, playerPosition.y, mHandlePlayer_, TRUE); 55} 56 57 58Game::~Game() 59{ 60 61} 62
hpp
1#ifndef ___GAME_HPP 2#define ___GAME_HPP 3#include "glm/glm.hpp" 4#include <array> 5 6 7//画面サイズ 8#define SCREEN_WIDTH ((int)14 * 70) 9#define SCREEN_HEIGHT ((int) 9 * 70) 10 11//前方宣言 12class Entry; 13class Game 14{ 15public: 16 Game(Entry* entry); 17 ~Game(); 18 19 void Update(); 20 void Draw(); 21 22 23private: 24 25 //スプライト 26 int mHandlePlayer_; //プレイヤー 27 28 29 30 glm::ivec2 playerPosition = glm::ivec2(0,0); 31 32 float length = 0; 33 bool turn = false; 34 Entry* owner; //Entryクラス 35}; 36 37#endif 38
あってるかわからんがradを変更してcos(),sin()のままじゃ、駄目ですか。
ああキャラクターの移動でradは変更できないのか
もしくは1*,ー1*で。流石に少し忘れたよ。いや今のままであってるかな。
回答1件
あなたの回答
tips
プレビュー