あれはDrawModiBillboard3DやDrawModiBillboard3Dを使えばできそうかと思い試してみましたが、
どうやらZバッファ(Zソート?)を使ったり、奥の部分をαブレンドしたり
しないとできなさそうだと思いました。
このサイトの3D背景を作ってみようというのを見て、
ポリゴンというもので奥行きや、αブレンドを表現していることを知りました。
ポリゴン系の関数を勉強した方がいいのでしょうか?
自分は以前、ここの掲示板で
管理人さんが「3D背景を作ってみようの項目は内容が古いので公式リファレンスを見て下さい」
と書かれている記事を見たことがあるので、その点も気になります。
ポリゴン系の関数じゃなくても再現可能ということでしょうか?
DrawModiBillboard3Dで見た目がそれっぽくなるので、簡単かと思い、
使ってみたコードですが、DrawModiBillboard3Dでは限界に感じました。
#include "DxLib.h" int G[3] ; float a=0; int Key[256]; int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){ char GetHitKeyStateAll_Key[256]; GetHitKeyStateAll( GetHitKeyStateAll_Key ); for(int i=0;i<256;i++){ if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++; else GetHitKeyStateAll_InputKey=0; } return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 G[0] = LoadGraph( "back/0/00.png" ) ; G[1] = LoadGraph( "board/board.png" ) ; while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){ //↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない // 3D空間上に画像を描画 DrawModiBillboard3D( VGet( 220.0f, a, a ), -60.0f, 200.0f, 60.0f, 200.0f, 460.0f, -280.0f, -460.0f, -280.0f, G[0], TRUE ) ; a++; DrawGraph( 0 , 0 , G[1] , TRUE ) ; DrawFormatString(0,0,GetColor(255,255,255)," %d",a); ScreenFlip(); } DxLib_End(); return 0; }
