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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C++

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

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

1回答

2244閲覧

[DXライブラリ] 周回しているオブジェクトを周回しながら回転させる方法とは?

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2021/04/16 03:21

提示コードですが画面の中心を中心に周回するコードなのですが**移動しながら周回させる方法が知りたいです。**提示コードのようにキー入力を受け付けて実装しまたがこれだと周回自体が悪くなるので実装できません。回転を維持したまま移動させる方法が知りたい。
提示コードは自分で記述しました。内容は理解していますが実装法がわかりません。

cpp

1 2#include "Game.hpp" 3#include "Entry.hpp" 4#include "Input.hpp" 5 6#include <iostream> 7 8#include "DxLib.h" 9 10#define PI ((float)3.14159265359) //円周率 11#define CELL ((float)48.0f) 12 13 14Game::Game(Entry* entry) 15{ 16 owner = entry; //Entry クラス 17 18 19 20 mHandlePlayer_ = LoadGraph("Assets/Player.png"); //プレイヤー 21 position = glm::ivec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2); //描画座標 22 23 movePosition = glm::ivec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2); //移動座標 24 25} 26 27 28//計算 29void Game::Update() 30{ 31#define SPEED ((float)5.0f) 32 if (owner->input->getKeyDownHold(KEY_INPUT_LEFT) > 0) 33 { 34 movePosition.x += -SPEED; 35 } 36 else if (owner->input->getKeyDownHold(KEY_INPUT_RIGHT) > 0) 37 { 38 movePosition.x += SPEED; 39 } 40 41 42 angle += (PI / 50); 43 position.x = (cos(angle) * 50) + movePosition.x; 44 position.y = (sin(angle) * 50) + movePosition.y; 45 46 if (angle > PI * 2) 47 { 48 angle = 0; 49 } 50 51 52 53 54} 55 56//描画 57void Game::Draw() 58{ 59 DrawGraph(position.x, position.y, mHandlePlayer_, TRUE); 60} 61 62 63Game::~Game() 64{ 65 66} 67

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/04/16 05:02

> 提示コードのようにキー入力を受け付けて実装しまたがこれだと周回自体が悪くなるので実装できません。 悪くなるといわれても、現状の動作、期待している動作がわかりません。 動作する状態のコードでもないので、期待する動きや現状の動きなど画像を用意したほうが回答が付きやすいと思います。 (コードがどのような動きを期待しているのかわからないため、何が悪いなど判断ができない)
guest

回答1

0

回転を維持したまま移動させる方法が知りたい。

利用している関数が間違えているのではないでしょうか?
DXライブラリの場合は別の様々な描画関数が用意されており、お使いのDrawGraphは指定した座標に描画する機能しか持ち合わせておりません。
回転ということでしたら、DXライブラリのリファレンスに書かれております、こちらをお試し下さい。

int DrawRotaGraph3(int x, int y,int cx, int cy,double ExtRateX, double ExtRateY,double Angle, int GrHandle,int TransFlag, int TurnFlag ) ; 【概略】 メモリに読みこんだグラフィックの回転描画(回転中心指定あり) 【引数】 x , y   : 画像を回転描画する画面上の中心座標 cx , cy  : 画像を回転描画する画像上の中心座標 ExtRateX  : 横方向の拡大率(1.0で等倍) ExtRateY  : 縦方向の拡大率(1.0で等倍) Angle   : 描画角度(ラジアン指定) GrHandle  : 描画するグラフィックの識別番号(グラフィックハンドル) TransFlag : 画像の透明度を有効にするかどうか( TRUE:有効にする FALSE:無効にする ) TurnFlag : 画像の左右反転を行うか、のフラグ(FALSEで普通に描画 TRUEで反転)

投稿2021/04/19 02:03

stdio

総合スコア3307

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

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

fana

2021/04/19 05:45

絵の向きを回したいという話ではないように思えますが… (じゃあ,一体どのような動作を達成したい話なのか? というと,そこは謎なのですが)
stdio

2021/04/19 20:37

タイトルの「周回しながら回転させる方法」と書いてあったので、てっきり惑星軌道でもやりたいのかと思いました。「回転を維持したまま移動させる方法」とも書いてありましたので、プレイヤー操作の事でしょうかね? どちらか迷ってしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問