--[[ 座標系(スクリーン、ビュー、ワールド)サンプル ]] function Initialize() -- 座標系は3つあって、一番大きな概念がワールドです -- ワールドの一部を切り出したものがビューです -- スクリーンはモニター上の座標です。PSP/Win互換なので480*272ドットサイズです -- 座標系の設定 -- SetWorldSize ワールドのサイズを設定する -- 各種キャラクターなどはこのワールドのサイズ内に配置します -- ここではとりあえず1024*1024を指定。1024にこれといった意味はありません SetWorldSize(1024, 1024) -- SetViewSize ワールドから切り出すビューサイズを設定する -- ここではモニター解像度と同じ SetViewSize(480, 272) SetViewPos(0, 0) SetDrawSize(480, 272) SetDrawPos(0, 0) -- 描画システムの初期化 GraphicInitialize( 1, -- SCREEN_MODE_REALSIZE (0) -- PCとPSPの区別をつけず、座標とサイズをそのまま適用 -- SCREEN_MODE_FIT_PSP (1) -- PSPを基準にしてPCでは座標系を倍のサイズとして処理をする -- SCREEN_MODE_FIT_PC (2) -- PCを基準にしてPSPでは座標系を半分のサイズとして処理をする 0, -- テクスチャデータの扱いかた -- TEXTURE_MODE_REALSIZE (0) -- テクスチャをPSPでもそのまま読み込む -- TEXTURE_MODE_SHRINK (1) -- テクスチャをPSPでは半分のサイズにして読み込む 0, -- 64サイズのテクスチャ使用枚数 0, -- 128サイズのテクスチャ使用枚数 2, -- 256サイズのテクスチャ使用枚数 -- 今回は256*256のテクスチャ2枚読み込むので2を指定 0, -- 512サイズのテクスチャ使用枚数 0, -- 1024サイズのテクスチャ使用枚数 0, -- フォントの使用種類数 0) -- アニメデータの使用数 bmp1 = LoadGraphic("ladder.bmp") white = LoadGraphic("title512.bmp") count = 0 mode = 0 return end --[[ 毎フレームこの関数がシステムから呼び出される ]] function MainLoop() -- 描画先 DRAW_TO_WORLD = 0 DRAW_TO_VIEW = 1 DRAW_TO_SCREEN = 2 -- 1秒ごとに設定を変える count = count + 1 if (count > 60) then count = 1 mode = 1 - mode end -- 設定を変えて表示位置の違いを確認 -- 数値をひとつずつ変更して変化を観察してください if (mode == 0) then SetViewSize(480, 272) -- ワールドからの切り出しサイズを480*272に設定 SetViewPos(0, 0) -- ワールドの座標(0,0)から切り出し開始 SetDrawSize(480, 272) -- ビューをスクリーンへ描画するときのサイズ。ここでは切り出しサイズと等倍 SetDrawPos(0, 0) -- ビューを描画開始するスクリーン座標。(0,0)なのでモニター左上から描画を開始 else SetViewSize(480, 272) -- 切り出しサイズは無変更 SetViewPos(150, 50) -- ワールドの切り出し開始位置を変更 SetDrawSize(480/2, 272/2) -- ビューの描画サイズを半分にする SetDrawPos(100, 50) -- ビューの描画開始座標を右下にずらしてみる end -- 座標系によるテクスチャ表示先の違い -- スクリーン座標系なので上記の設定は関係しない。つまりモニター上の指定場所に表示される -- 得点表示などモニターの固定場所へ表示したいときなどに使う DrawTexture(bmp1, 400, 200, 64, 64, 0, 0, 64, 64, 1, DRAW_TO_SCREEN) -- ワールド座標系における(200, 200)に描画 -- 通常キャラクターなどを描画するときはこの座標系を使用します DrawTexture(bmp1, 200, 200, 64, 64, 0, 64*3, 64, 64, 1, DRAW_TO_WORLD) -- ビュー座標系における(0,0)に描画 -- ビュー上の座標系を選ぶときはあまり無いと思います DrawTexture(bmp1, 0, 0, 64, 64, 0, 64*2, 64, 64, 1, DRAW_TO_VIEW) -- 違いをわかりやすくするためにビューの部分を背景白にする DrawTexture(white, 0, 0, 480, 272, 0, 0, 480, 272, 0, DRAW_TO_VIEW) -- よくわからない場合は以下の設定を使えばモニター上の座標系だけで済ませることができます --[[ SetViewSize(480, 272) SetViewPos(0, 0) SetDrawSize(480, 272) SetDrawPos(0, 0) ]] return end