HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0309
リモルマップ表示4未解決


リモル

リンク

2009/3/9(Mon) 21:30:50|NO.23777

こんにちは…えっとまずは未完成スクリプトです。

buffer 1 picload "kyara1.bmp" screen 0, 400, 250 gmode 2,24,24 color 0,0,0 boxf x = 100 : y = 250-50-48-24 d = 10 gf = 0 pos x,y gcopy 1,0,24 *mainloop redraw 0 stick kk, 15 if kk & 128 : end if kk & 1 : goto *hidari if kk & 2 : goto *janpu if kk & 4 : goto *migi if kk & 8 : gcopy 1,24,0,24,24 wait 20 goto *mainloop *migi color 0,0,0 boxf x = x + d pos x, y if gf = 0 { gcopy 1, 0, 0 gf = 1 } else { gcopy 1, 0, 24 gf = 0 } redraw 1 wait 20 goto *mainloop *hidari color 0,0,0 boxf x = x - d pos x, y if gf = 0 { gcopy 1, 24, 0 gf = 1 } else { gcopy 1, 24, 24 gf = 0 } redraw 1 wait 20 goto *mainloop *janpu goto *mainloop
汚いスクリプトですみません。
そこでここにマップを表示させたいのですが
マップエディタはサンプルスクリプトgame>>mapedit.hspを使って作ったmapを使用して
***
あ…ところでこのサンプルスクリプトで作ったマップって衝突判定に対応していますか?
***
後々床・壁などの衝突判定もつけていきたいのですがいきなりは無理なのでとりあえず
後に衝突判定に対応した、マップ表示をしたいのですが…orz
マップチップひとつのサイズは24×24です。
文がおかしかったりスクリプトにアドバイス追加などありましたらお願いします。
長文失礼しました。



この記事に返信する


check

リンク

2009/3/10(Tue) 09:12:23|NO.23787

日本語でおkと言いたいところだが、
とりあえず*migiや*hidariへジャンプするときに、gotoではなくgosubを使って、
returnで*mainloopに戻るといい。



リモル

リンク

2009/3/10(Tue) 14:15:31|NO.23791

あ…サンプルのマップ編集にもありましたが
やはりその方がいいのですね!!
分かりました。
直してみます。



Satoshi

リンク

2009/3/10(Tue) 18:52:17|NO.23794

サンプルスクリプトのマップエディターは配列をそのまま保存しています。
つまり配列変数の定義さえすればそのまま読みこんじゃえます。便利ですね。

>このサンプルスクリプトで作ったマップって衝突判定に対応していますか?

衝突判定は自分で作るものです。参考までに僕のやり方を書きます。
マップチップを2ケタや3ケタで管理するという方法です。

マップチップの種類として当たり判定のない地形、ある地形などがあるとおもいますが、
無い地形の10の位は5未満、有る地形の10の位は5以上とすると、
無い地形では0〜49の50枚、有る地形では50〜99の50枚をそれぞれ作り出せます。

形式はこれで考えたとして、本体で実際にキャラクターの動きの制御をします。
自分の座標から変数mapdataにマップ情報を取得した時、60番のチップだったとします。
もうお分かりですね?

if (kk&1)=1 and mapdata<50 :goto *hidari if (kk&2)=2 and mapdata<50 :goto *janpu if (kk&4)=4 and mapdata<50 :goto *migi
このように50番以降だった場合、サブルーチンに飛ばさなければいいのです。
実際にはもうちょっと細かく書いた方が後々いいのですが…

余計ですが気になった点として移動をサブルーチンで管理しているとことです。
キー入力の時点で移動用変数dに移動量を代入し、当たり判定でdの値を変える、
といった形の方が当たり判定を組み込む時に楽です。

これはアクションゲームでしょうか?ジャンプの再現など難しいので頑張ってください。



リモル

リンク

2009/3/10(Tue) 19:38:04|NO.23796

横視点アクションゲームです。
一応棒レンジャーというゲームが一番理想に近いのかな^^;
あ…一応マップ表示とスクリプトができたので乗せておきます。

dim jmptable,21 dim map,16,8 mapx=0:mapy=0 sx = 384 : sy = 192 x = 100 : y = sy-48-24 d = 10 gf = 0 kyara = 1 mapd = 2 cx = 24 cy = 24 jmptable=0,5,9,13,16,19,21,23,24,25,25,25,24,23,21,19,16,13,9,5,0 j=0 bload "map1.map",map ;マップ読み込み buffer kyara picload "kyara1.bmp" buffer mapd picload "jmap1.bmp" screen 0, sx, sy gmode 2,cx,cy *idou gosub *cb gosub *putmap redraw 1 await 20 pos x,y gcopy 1,0,24 *mainloop redraw 0 stick kk, 15 if kk & 128 : end if kk & 1 : gosub *hidari if kk & 2 : gosub *janpu if kk & 4 : gosub *migi if kk & 8 : goto *mainloop wait 20 goto *mainloop *hidari gosub *cb x = x - d pos x, y if gf = 0 { gcopy 1, cx+1, 0 gf = 1 } else { gcopy 1, cx+1, 24 gf = 0 } redraw 1 return *janpu gosub *cb pos x,y-jmptable(j) gcopy 1,cx*0,cy*1 redraw 1 j++ if j ! 21 : wait 1 :goto *janpu if j = 21 : j = 0 return *migi gosub *cb x = x + d pos x, y if gf = 0 { gcopy 1, cx*0, cy*0 gf = 1 } else { gcopy 1, cx*0, 24 gf = 0 } redraw 1 return *cb redraw 0 color 0,0,0 boxf gosub *putmap return *putmap repeat 8 i=mapy+cnt:y=cnt*cy repeat 16 pos cnt*cx,y gcopy mapd,map(mapx+cnt,i)*cx,0 loop loop return
またご指摘などありましたらよろしくお願いします。



ONION software Copyright 1997-2023(c) All rights reserved.