;
; スプライトを描画する
;
#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
|