| 
;
;	スプライトを描画する
;
#include "e3dhsp.as"
	;/////////////////
	;
	;	初期化
	;
	E3DInit
	dim keybuf, 256		;キー入力
	;/////////////////	
	;
	;	カメラの初期化
	;	ライトの設定
	【いつもどおりなので省略】
	;/////////////////	
	;
	;	形状データのロード
	;
	sdim mediadir, 2048
	mediadir = curdir + "\\tako.sig"
	E3DSigLoad mediadir, hsid1
	E3DSetPos hsid1, 5000, 0, 5000
	frameno1 = 0	;モーションは使用しない。
	E3DSetBeforePos hsid1
	;/////////////////	
	;
	; スプライトデータの読み込み
	;
	E3DCreateSprite "batu.bmp", 1, spid1
	E3DGetSpriteSize spid1, spw1, sph1
	;/////////////////	
	;
	;	地面の作成
	;
	sdim pathbuf, 2048, 4
	pathbuf.0 = curdir + "\\yama.bmp"	;地面の座標情報
	pathbuf.1 = curdir + "\\michi.bmp"	;地面の道の情報
	pathbuf.2 = curdir + "\\kawa.bmp"	;地面の川の情報
	pathbuf.3 = curdir + "\\bazou.bmp"	;地面、道、川の模様を決める、BMPファイル
	;地面作成用の値
	mapsize = 60000		;X,Z座標の最大値
	mapdiv = 60			;座標の分割数
	mapheight = 3000	;高さの最大値
	E3DLoadGroundBMP pathbuf.0, pathbuf.1, pathbuf.2, pathbuf.3, mapsize, mapsize, mapdiv, mapdiv, mapheight, hsid0
	frameno0 = 0	;モーションは使用しない。
;////////////////////////////////////////////////////////////////
;/////////////////
;
;	メインループ
;
*main
	E3DGetKeyboardState keybuf	;キー状態取得
	;モデルが、視野内にあるか判定
	E3DChkInView hsid1	;キャラクター
	E3DChkInView hsid0	;地面
	gosub *ChkConf	;地面との当たり判定
	E3DBeginScene	;-----シーンスタート
		;バックバッファへの書き込み作業を行う
		if keybuf.VK_ESCAPE = 1 : goto *bye ; [ESC]で終了
		gosub *MoveChara		;キャラクター移動
		gosub *MoveCamera		;カメラ移動
;		gosub *DrawSprite	;スプライトの描画(3)
		;バックバッファにレンダリングする。
		E3DRender hsid1, 0, frameno1, 0
;		gosub *DrawSprite	;スプライトの描画(2)
		E3DRender hsid0, 0, frameno0, 0
		E3DDrawText 0, winy/2, 1, 255,255,255, "Message Test Message Test Message Test Message Test Message Test Message Test "
		gosub *DrawSprite	;スプライトの描画(1)
		E3DDrawText 0, winy/2+20, 1, 255,255,255, "Message Test 2 Message Test 2 Message Test 2 Message Test 2 Message Test 2 Message Test 2"
	E3DEndScene		;-----シーン終了
	E3DPresent		;バックバッファの内容を、プライマリバッファに転送。描画する。
	E3DSetBeforePos hsid1
	E3DWaitbyFPS 60 : await 0
goto *main
;////////////////////////////////////////////////////////////////
;
;	サブルーチン
;
;/////////////////
;
;	終了処理
;
*bye
	【いつもどおりなので省略】
;/////////////////
;
;	キャラクター移動
;
*MoveChara
	【いつもどおりなので省略】
;/////////////////
;
;	カメラ移動(キャラクター追跡型)
;
*MoveCamera
	【いつもどおりなので省略】
;/////////////////
;
;	キャラクタの地面との当たり判定
;
*ChkConf
	【いつもどおりなので省略】
;/////////////////
;
;	スプライトの描画
;
*DrawSprite
	E3DBeginSprite
		E3DGetScreenPos2 0,0,0, x2d,y2d, validflag	;3D座標から2D座標取得
		if validflag!0 {
			E3DRenderSprite spid1, 100, 100, x2d - (spw1 / 2),y2d - (sph1 / 2)	;スプライト描画
		}
	E3DEndSprite
	return
 |