ギャラクシーフォースの動画をみていて、疑似3D部分を実装してみる。
スプライトの多用で実装しているようなので、スプライトに最強なプチコンにピッタリ。
プチコン3の方、すみませんBIG専用です。
普通のポリゴンなんかの座標のとり方とちょっと違う気がして
消失点から座標を求める方法をとってみます。
それっぽくなりましたので公開。
開始10分 久しぶりすぎてキーボードの[カタカナひらがなローマ字]ボタンで文字入力を切り替えできること忘れていてハマります。
画像ひどすぎますが最後にはちゃんとしたものを載せます。すみません。
開始20分
開始30分 プチコン本は使わない謎の縛りで作成しています。
開始40分 たいして進んでいません。
開始50分 まだ擬似3Dの中核部分は未検討。このあと数時間はまります。
なんで10分毎かというと10分ずつタイマーかけてやってます。
モチベーションあがらない時とかまあ10分なら…というスタートのさせ方、個人的にはいい始め方です。
4時間後
最終形態です。6時間ぐらいは経過しています。
2重螺旋とランダムのスプライトの細長い空間を上下左右、前後にスティックで動かせます。
Zバッファー処理は27行目
一番悩んだのはスプライトのちらつきで最初はループごとにSPCLR SPSETをしていたのですが、どうしても移動前に左上にちらつきます。
試行錯誤の結果、最初にまとめて登録して非表示のものはSPOFSで画面外に表示させています。これでかなりちらつきはなくなりました。
座標系はスプライトを重ねて面を作るとかの検討はしていません。たぶん技がいろいろある気がします。
最終形態
git ソースなど置き場所
<参考資料>
プチコンBIGのプログラムをパソコンに転送してみる。
スプライトの多用で実装しているようなので、スプライトに最強なプチコンにピッタリ。
プチコン3の方、すみませんBIG専用です。
普通のポリゴンなんかの座標のとり方とちょっと違う気がして
消失点から座標を求める方法をとってみます。
それっぽくなりましたので公開。
開始10分 久しぶりすぎてキーボードの[カタカナひらがなローマ字]ボタンで文字入力を切り替えできること忘れていてハマります。
画像ひどすぎますが最後にはちゃんとしたものを載せます。すみません。
開始20分
開始30分 プチコン本は使わない謎の縛りで作成しています。
開始40分 たいして進んでいません。
開始50分 まだ擬似3Dの中核部分は未検討。このあと数時間はまります。
なんで10分毎かというと10分ずつタイマーかけてやってます。
モチベーションあがらない時とかまあ10分なら…というスタートのさせ方、個人的にはいい始め方です。
4時間後
最終形態です。6時間ぐらいは経過しています。
2重螺旋とランダムのスプライトの細長い空間を上下左右、前後にスティックで動かせます。
Zバッファー処理は27行目
一番悩んだのはスプライトのちらつきで最初はループごとにSPCLR SPSETをしていたのですが、どうしても移動前に左上にちらつきます。
試行錯誤の結果、最初にまとめて登録して非表示のものはSPOFSで画面外に表示させています。これでかなりちらつきはなくなりました。
座標系はスプライトを重ねて面を作るとかの検討はしていません。たぶん技がいろいろある気がします。
ACLS:XON WIIU:XSCREEN 6,6,6,2048,2'854X480 RC=2000 DIM RX[RC],RY[RC],RZ[RC],RS[RC],RT[RC] MX=1500:MY=1500:MZ=0 DEF SETR FOR I=1000 TO 1999 RX[I]=RND(3000):RY[I]=RND(3000):RZ[I]=RND(10000):RS[I]=10:RT[I]=RND(5) NEXT END DEF SP N X1=RX[N]-MX:Y1=RY[N]-MY:Z1=RZ[N]-MZ 'SPCLR N IF Z1<1 OR Z1>2000 THEN SPHIDE N:SPOFS N,500,500:RETURN SZ=(3000-Z1)/3000 DK=255-Z1*0.1 SPCHR N,RT[N]:SPOFS N,500,500:SPSCALE N,RS[N]*SZ,RS[N]*SZ:SPOFS N,X1*SZ+427-(RS[N]*16*SZ/2),Y1*SZ+240-(RS[N]*16*SZ/2): SPCOLOR N,RGB(255,DK,DK,DK):SPSHOW N END DEF SPINIT FOR I=0 TO 1999 SPSET I,1 SPOFS I,500,500 NEXT END SPINIT ROUNDR:SETR RSORT 0,RC,RZ,RX,RY,RS,RT WHILE 1 FOR I=0 TO 1999 SP I NEXT STICK OUT OX,OY:STICKEX OUT EX,EY MX=MX+OX*5:MY=MY+OY*5:MZ=MZ+EY*50 MX=MAX(0,MIN(3000,MX)):MY=MAX(0,MIN(3000,MY)):MZ=MAX(0,MIN(10000,MZ)) WEND DEF ROUNDR FOR I=0 TO 499 RX[I]=SIN(I/5)*200+1500:RY[I]=COS(I/5)*200+1500 RZ[I]=10000-I*20:RS[I]=10:RT[I]=RND(5) RX[I+500]=-SIN(I/5)*200+1500:RY[I+500]=-COS(I/5)*200+1500 RZ[I+500]=10000-I*20:RS[I+500]=10:RT[I+500]=RND(5) NEXT END
最終形態
git ソースなど置き場所
<参考資料>
プチコンBIGのプログラムをパソコンに転送してみる。