ページ 11

キャラの往復

Posted: 2015年12月01日(火) 22:34
by けんしn
DXlibを使用して、ゲームを作るのに、キャラクターをウインドウの壁の間を往復させたいのですがどうすればいいですか?

Re: キャラの往復

Posted: 2015年12月01日(火) 23:02
by みけCAT
適切なコードを書き、コンパイル(アセンブルとリンクを含む)し、実行すればいいです。
キャラクターの絵を描き、適切なパスにファイルとして保存することも必要かもしれません。

Re: キャラの往復

Posted: 2015年12月02日(水) 00:25
by softya(ソフト屋)
座標と移動ベクトル変数で情報を保持。壁に接近したら、壁から離れる方向に移動ベクトルのXかYを反転します。
これで往復するはずです。

Re: キャラの往復

Posted: 2015年12月02日(水) 21:13
by Dixq (管理人)
softyaさんが仰る通りのサンプルプログラムを書いてみました。

コード:

#define _USE_MATH_DEFINES
#include "DxLib.h"
#include <math.h>
#define W 640
#define H 480

class Player {
	double x, y, v, ang;
public:
	Player() { x = 320, y = 240, v = 5, ang = 0; }
	void update() {
		if (!(0<=x && x<W)) {
			ang += M_PI;
		}
		x += cos(ang)*v;
		y += sin(ang)*v;
	}
	void draw() {
		DrawCircle((int)x, (int)y, 10, GetColor(255, 255, 255), TRUE);
	}
};

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);

	Player p;

	while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
		p.update();
		p.draw();
	}

	DxLib_End();
	return 0;
}
実行結果
[youtube][/youtube]

どうでしょうか?
vは速さ、angは角度です。
sin,cosの使い方はこの辺で紹介しています。
http://dixq.net/g/h_06.html