ページ 11

ゲーム画面外の演出

Posted: 2012年6月22日(金) 14:04
by aptherus
初めまして。こちらの動画のゲームのように、画面外の演出をするにはどうすればいいのでしょうか?

http://www.nicovideo.jp/watch/sm5018088

このゲームはDXライブラリを使って作られているそうです。しかし全くやり方が分かりません。自分でスクリプトを組んでいるのでしょうか?

詳しい方、ご教授お願いいたします。

Re: ゲーム画面外の演出

Posted: 2012年6月22日(金) 18:00
by h2so5
Win32APIを使ってDXライブラリの主画面とは別に、もうひとつウィンドウを作って透過させていると思われます。
「いりす症候群!」はDXライブラリ+D言語というちょっと変わった構成だったと思いますが、C/C++でも同様です。

参考になるかもしれません↓
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=2275
http://hpcgi2.nifty.com/natupaji/bbs/pa ... o=1616&p=1

Re: ゲーム画面外の演出

Posted: 2012年6月22日(金) 19:17
by ISLe
面白そうなので作ってみました。

なるべくDXライブラリだけでやるとしたらこんな感じですかね。
ひとつ目のプログラムを起動してから、ふたつ目のプログラムを起動してください。

コード:

#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	SetMainWindowText("ユニークな名前");
	SetWindowStyleMode(2);
	ChangeWindowMode(TRUE);
	SetDrawScreen(DX_SCREEN_BACK);
	SetGraphMode(200, 200, 32);
	SetUseBackBufferTransColorFlag(TRUE);
	SetBackgroundColor(0, 255, 0);
	if (DxLib_Init() != 0) return 0;
	SetTransColor(0, 255, 0);
	
	while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0) {
		DrawBox(0, 0, 200, 200, GetColor(0,255,0), TRUE);
		DrawCircle(100, 100, 100, GetColor(0,0,255), TRUE);
	}
 
	DxLib_End();
	return 0;
}

コード:

#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);
	if (DxLib_Init() != 0) return 0;

	HWND hWnd = FindWindow("ユニークな名前", NULL); // なぜかクラス名に

	while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0) {
		int MouseX, MouseY;
		GetMousePoint(&MouseX, &MouseY);
		DrawCircle(MouseX, MouseY, 100, GetColor(255,0,0), TRUE);
		if (hWnd) {
			POINT pt = {MouseX, MouseY};
			ClientToScreen(GetMainWindowHandle(), &pt);
			int x = pt.x - 100;
			int y = pt.y - 100;
			SetWindowPos(hWnd, GetMainWindowHandle(), x, y, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
		}
	}
 
	DxLib_End();
	return 0;
}

Re:Re: ゲーム画面外の演出

Posted: 2012年6月22日(金) 20:16
by aptherus
透過を使えばこんなこともできるのですね!お二人とも、大変ありがとうございました。ソースコードを書いてくれた方、お手本にさせていただきます!リンクの方も参考にさせていただきます!