トップページgamedev
987コメント370KB

HSP - Hot Soup Processor [14]

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/12/09(土) 22:35:08ID:E0eCgjhQ
       (  ,,,)
        .(  ,,)      スクリプト言語 HotSoupProcessor について
        ( ,,).        ゲーム製作の視点から、また〜りと語り合うスレ。
     , -──- 、
    (,;::-──-; )-、
     .|` ̄ ̄ ̄´;;|ヽ l   * 質問する前に検索してみる事
     l;    :::;;;l-' /   * ヲチ、ネタなどはスレ違い
    ,-ヽ───.'-、´..   * 歴代スレ、関連サイトは >>2-4 あたり
    ヽ ──── '

  ONION software (本家)
   http://www.onionsoft.net/
0623名前は開発中のものです。2007/03/29(木) 10:39:59ID:3R4jXytD
ちっちゃい窓画面と二倍表示の窓画面の切り替えをしたくて、

#deffunc draw int dispbuf
getkey key,112
if key {
 if key_on = 0 {
  if wsize {
   wsize = 0
   screen 0,320,240,0,(ginfo_dispx / 2 - 160),(ginfo_dispy / 4) : cls 4
  } else {
   wsize = 1
   screen 0,640,480,0,(ginfo_dispx / 2 - 320),(ginfo_dispy / 4) : cls 4
  }
  key_on = 1
 }
} else : key_on = 0

gsel 0 : pos 0,0
if wsize = 0 : gcopy dispbuf,0,0,320,240
if wsize = 1 : gzoom 640,480,dispbuf,0,0,320,240
gsel dispbuf
return

「dispbufに全部描画したあとスクリーンに(拡大)コピーする」
っていう命令を作ってredrawの代わりに使ってるんだけど
なんか他にもっと簡単な手段とか無いですか?
0624名前は開発中のものです。2007/03/29(木) 11:35:10ID:5ZBqJ65v
>>623
大きさ変えるだけならwidthでいいんじゃね?
あと、clsよりboxfの方がいい。
0625名前は開発中のものです。2007/04/01(日) 08:33:57ID:PkSFAggM
repeat -1
chp_zure.i = furehaba * sin((kakusokudo*cnt)+(kakudosokudo*i));正弦波?
i++
if i>chp_max : i=0
//ここでずらした位置に画像をコピー処理
loop

擬似ラスタスクロールで波が作りたいんですが、自分で作ったやつを見ると何故かカクカクしてしまいます。
ズレを画像の縦の座標1ピクセルごとに正弦波で作ってやって、それをその座標でコピーしています。
0626名前は開発中のものです。2007/04/01(日) 08:42:58ID:bh2+2cXg
・redraw入れたか?
・変数名が酷いがどう思う?
・sin( kakusokudo * (cnt + i) )のほうがいいと思うけど何か?
0627名前は開発中のものです。2007/04/01(日) 10:45:02ID:PkSFAggM
>>626
redrawは入れました
読みずらくてすいません。
0628名前は開発中のものです。2007/04/01(日) 10:50:56ID:bh2+2cXg
int型になってるとか
0629名前は開発中のものです。2007/04/01(日) 11:10:44ID:PkSFAggM
実数で計算して最終的にint()を呼び出して変えてます。
一応左右には揺れるんですけど、波みたいに見えないんですよね
波の起こりが遅いように見えます
0630名前は開発中のものです。2007/04/01(日) 11:47:38ID:bh2+2cXg
buffer 0
picload "test.jpg" //適当な画像
SZx = double(ginfo_winx)
SZy = double(ginfo_winy)
screen 1,SZx,SZy
kakusokudo = 0.05
furehaba = 0.0
dim chp_zure,SZy
i = 0
repeat
?repeat SZy
??chp_zure(cnt) = furehaba * sin( kakusokudo * double(cnt + i) )
?loop
?redraw 0
?color 0,0,0 : boxf
?repeat SZy
??pos chp_zure(cnt), cnt
??gcopy 0,0,cnt,SZx,1
?loop
?redraw 1
?i += 5
?kakusokudo += 0.0001
?furehaba += 0.1
?await 16
loop

ちょっと書いてみた。こんな感じでいい?
0631名前は開発中のものです。2007/04/01(日) 11:57:28ID:l/QzLrkf
;モレも作ってみたヨ

#define PI 3.1415926535897932386 

w=32                ;波の強さ
t=128               ;波の間隔

buffer 2,640,480 :picload "",1
gsel 0
repeat
    repeat ginfo_winy
        x=sin(PI*((cnt*360/t+a)\360)/180)*w
        y=cnt
        pos x,y :gcopy 2,0,y,ginfo_winx,1
    loop
    redraw 1: redraw 2 :color 0,0,0 :boxf :color 255,255,255
    a+=16           ;波の速さ
    await 16
loop
0632名前は開発中のものです。2007/04/01(日) 12:05:42ID:bh2+2cXg
ちょい修正
buffer 0
picload "test.jpg" //適当な画像
SZx = double(ginfo_winx)
SZy = double(ginfo_winy)
screen 1,SZx,SZy
kakusokudo = 0.05
furehaba = 0.0
dim chp_zure,SZy
i = 0
repeat
 redraw 0
 color 0,0,0 : boxf
 repeat SZy
  chp_zure(cnt) = furehaba * sin( kakusokudo * double(cnt + i) )
  pos chp_zure(cnt), cnt
  gcopy 0,0,cnt,SZx,1
 loop
 redraw 1
 i += 5   //スピード
 kakusokudo += 0.0001 //振動数
 furehaba += 0.1   //振れ幅
 await 16
loop
06336252007/04/01(日) 13:39:14ID:PkSFAggM
>>630
>>631
ありがとうございます。
初歩的な勘違いをいくつかしていたのが原因だったみたいでした。

あとできたら横揺れに縦揺れを追加する方法が知りたいんです。
一応疑問は解決したので、これはできたらでいいんですが
06346312007/04/01(日) 14:01:50ID:l/QzLrkf
   pos x,y :gcopy 2,0,y,ginfo_winx,1
      ↓
   pos 0,y :gcopy 2,0,x+y,ginfo_winx,1

こうすると縦揺れ(?)になるヨ


   pos x,y :gcopy 2,0,x+y,ginfo_winx,1
      ↑で縦横
0635名前は開発中のものです。2007/04/01(日) 14:25:16ID:bh2+2cXg
// 1/2

#define SZX_EXT 128 //揺れてはみ出た分
#enum BUF_IMG = 0
#enum BUF_SECOND
#enum SCR_MAIN

//元画像バッファ
buffer BUF_IMG
picload "D:\\画像\\ありがちな虹\\25666.jpg" //適当な画像
SZx = double(ginfo_winx)
SZy = double(ginfo_winy)
//横揺れ
buffer BUF_SECOND, SZx + SZX_EXT * 2, SZy
//メインウィンドウ
screen SCR_MAIN, SZx, SZy
//横揺れ用
dim chp_zure_x, SZy + SZX_EXT
kakusokudo_x = 0.05
furehaba_x = 0.0
//縦揺れ用
dim chp_zure_y, SZy
kakusokudo_y = 0.05
furehaba_y = 0.0
i = 0
0636名前は開発中のものです。2007/04/01(日) 14:26:08ID:bh2+2cXg
// 2/2

repeat
redraw 0
//横揺れを描画
gsel BUF_SECOND
color 0,0,0 : boxf
repeat SZy
chp_zure_x(cnt) = furehaba_x * sin( kakusokudo_x * double(cnt + i) )
pos chp_zure_x(cnt) + SZX_EXT, cnt
gcopy 0, 0,cnt, SZx + SZX_EXT,1
loop
//縦揺れを描画
gsel SCR_MAIN
color 0,0,0 : boxf
repeat SZx + SZX_EXT
chp_zure_y(cnt) = furehaba_y * sin( kakusokudo_y * double(cnt + i) )
pos cnt, chp_zure_y(cnt)
gcopy BUF_SECOND, cnt + SZX_EXT,0, 1,SZx
loop
redraw 1
i += 5 //スピード
kakusokudo_x += 0.00001 //振動数
furehaba_x += 0.2 //振れ幅
kakusokudo_y -= 0.00001 //振動数
furehaba_y -= 0.2 //振れ幅
await 16
loop
0637名前は開発中のものです。2007/04/01(日) 23:23:00ID:qmrcQHpu
>>624
亀だけどd

他には特になし、てことでいいのかな…
0638名前は開発中のものです。2007/04/02(月) 02:06:45ID:yH4J2c4D
#define 変数 システム変数(cntとか)

って無理なんですかね?
コレができれば管理の手間が減らせそうなんだけど・・・
0639名前は開発中のものです。2007/04/02(月) 02:48:10ID:E8nYiBqA
やってみればいいだろそれくらいなら
0640名前は開発中のものです。2007/04/02(月) 03:43:50ID:YF+orBxP
constも使おうよ
0641名前は開発中のものです。2007/04/02(月) 06:32:38ID:yH4J2c4D
>>639
いえすでにやってみてエラーがでたんで、その回避か代替は可能かなと

>>640
#constでも、やはり変数を使ってる時点でエラーがでました



普通に需要がありそうな気がしたんですが、発想自体がイレギュラーだったのかな・・・
0642名前は開発中のものです。2007/04/02(月) 07:03:07ID:6D/Td0Rc
#define 変数 cnt

repeat 3
mes 変数
loop

;何を言っているのかよくわからないよ
0643名前は開発中のものです。2007/04/02(月) 07:51:02ID:OgFackaK
ネストしても各cntが生きてる時点でアウトな気がする
0644名前は開発中のものです。2007/04/02(月) 08:30:49ID:AAu4E+87
#defineはただの置き換えだろ・・・同じ意味を持たせるってわけじゃないだろ・・・
0645名前は開発中のものです。2007/04/02(月) 10:16:27ID:CBsQTNyT
>>641
>普通に需要がありそうな気がしたんですが、発想自体がイレギュラーだったのかな・・・
意味がわからね
何をするために必要なの?
意味あんの?
0646名前は開発中のものです。2007/04/02(月) 10:58:38ID:WD0jAhl8
システム変数に値を代入したいとか...?
06476412007/04/02(月) 18:20:22ID:yH4J2c4D
;失礼しました・・・3D関係でオブジェクトIDというのが数字で割当てられているので
;それを名前で把握する為に#defineすると言うのが目的です。
;例えば
buf="pan","pin","pun","pen"

repeat 4
#define buf(cnt) ,cnt
loop

;という感じで、p2はp1に対応したオブジェクトIDを入れて使おうと思いまして。
;bufはメモリノートパッドで大量に読むので、その手作業を減らす為です。
0648名前は開発中のものです。2007/04/02(月) 18:26:35ID:AAu4E+87
repeat 4
#define buf(cnt) ,cnt
loop

無意味なループじゃね?いろいろと勘違いしてないか?
06496412007/04/02(月) 20:21:16ID:yH4J2c4D
・・・イヤそうじゃなくて・・・

>>647で書いたように、#defineが変数の中身を参照した使い方がしたいけど
仕様ではそれができない(変数自体使えない)んで、
その代わりになる方法はないでしょうか?という質問です。解りづらくてスミマセン
0650名前は開発中のものです。2007/04/02(月) 20:24:51ID:GnD4wQd4
hoge = cnt
0651名前は開発中のものです。2007/04/02(月) 20:27:52ID:tpdpORJE
>>649
たぶん無理な気ガス。
どちらにしろ、#define はコンパイル前に置換するだけだから。

あえてやるなら、連想配列みたいな方法だと思うが。

オブジェクトIDと文字列が完全に固定なら、
repeat 4
mes "#define "+buf(cnt)+" "+cnt
loop
みたいにヘッダファイルを書き出してから、それをインクルードするw
06526412007/04/02(月) 20:44:30ID:yH4J2c4D
お答えありがdです。

やはり私の発想はどこか飛んでたようですね。あきらめてまた一から
違う管理方法を考えます
0653名前は開発中のものです。2007/04/02(月) 22:21:02ID:fSYb2JxG
http://nextbm.ty.land.to/index.htm

毎月HSP掲示板に来てたのが廃刊してくれたそうだw
理由がワロスw
0654名前は開発中のものです。2007/04/02(月) 22:31:48ID:nAJq39ai
>>647
オブジェクトIDは何が割り当てられるか不定で
使う時には名前でIDを使いたい?

俺はこんな感じでやってる(ID何番が割り当てられるかは気にしなくていいから楽)
#include "hgimg3.as"
#enum pan=10
#enum pin
#enum pun
#enum pen
#enum objend
dim id,objend
hgini
setsizef 10,10
addbox mid
repeat objend-pan,pan
regobj id(cnt)
loop
repeat
setpos id(pan),sin(0.1*cnt)*25
addang id(pan),0.01,0.01
setpos id(pin),0,sin(0.01*cnt)*20
addang id(pin),0,0.01,0.01
hgdraw
hgsync 10
loop

連想配列が実装されたらid("名前")って出来るみたいだけど・・・
0655名前は開発中のものです。2007/04/02(月) 22:43:36ID:6D/Td0Rc
HSP3.1は連想配列の実装が予定されている・・・
そんなふうに考えていた時期が俺にもありました
0656名前は開発中のものです。2007/04/04(水) 17:21:52ID:n+Mf/sOw
age
0657名前は開発中のものです。2007/04/04(水) 19:18:19ID:xIUSvdy4
HSPって、&と&&の区別しないんだな
俺の3時間返せ
0658名前は開発中のものです。2007/04/04(水) 19:34:58ID:WifholmS
つ【3時間】
0659名前は開発中のものです。2007/04/05(木) 11:29:50ID:ym/KUe2Y
マニュアルよめよ
0660名前は開発中のものです。2007/04/05(木) 11:36:49ID:qUHD2MB+
↑読んでないやつ
0661名前は開発中のものです。2007/04/05(木) 11:41:19ID:Jnpg8Zk/
その辺りはマニュアルに書いてない、というか、
仕様外の演算子じゃねーの?
0662名前は開発中のものです。2007/04/06(金) 22:37:19ID:9HFxtVR8
で、β8が出てる訳だが

>・更新履歴
>
> 2007/04/05 3.1b8
>
> 新規拡張プラグインhspcvを追加。(詳細はhspcv.txtを参照してください)
> 変数データをまとめてファイルに読み書きするためのvload、vsave関連命令(hspdaプラグイン)を追加。
> HSPCL(コンソール版)のinput命令でバイナリーモード時にEOFを誤認識する不具合を修正。
> コンパイル時の追加ファイル(hspdef.as等)が存在しなくてもエラー表示しないように修正。
> 変数名情報を常に出力するオプションを#cmpopt命令に追加。
> HSPSDK(プラグイン)側から変数IDと変数名に関する情報を取得可能に修正。
> RSSモジュール(mod_rss.as)のモジュール名を修正。(HSPBT#133)
> user32.as内のGetWindowModuleFileName関数定義を修正。(HSPBT#125)
> 拡張プラグインhspinetのftpopen命令のポート指定ができない不具合を修正。(HSPBT#58)
> 拡張プラグインHGIMG3の機能追加と不具合をいくつか修正(詳細はhgimg3.txtを参照してください)。
0663名前は開発中のものです。2007/04/07(土) 00:05:32ID:wTOoLdT/
そのb8、実行するとタイトルがb7になるわけだが
あと、アナウンスも無いけどね
0664名前は開発中のものです。2007/04/07(土) 21:21:42ID:xJqf1AgZ
正式版キタ
0665名前は開発中のものです。2007/04/08(日) 08:49:30ID:yoJuvkiJ
メッセージボックスの指定行のバイト数ってどうやって求めてる?
OSの問題でsendmsgはボツだし、地道に計算したらフリーズするし・・
0666名前は開発中のものです。2007/04/08(日) 10:45:14ID:YH0fkqKd
リンク張っていないので
ttp://www.onionsoft.net/hsp/file/hsp31b8.lzh
ttp://www.onionsoft.net/hsp/file/hspsdk31b8.lzh

なんかdgdgね
0667名前は開発中のものです。2007/04/08(日) 11:34:02ID:kbz+IrgG
>>665
note系命令で指定行取得してstrlen
0668名前は開発中のものです。2007/04/08(日) 12:54:56ID:yoJuvkiJ
>>667
thx
0669名前は開発中のものです。2007/04/08(日) 20:17:18ID:5KwOsR6N
新しいヘルプになって最前面に固定できなくなった?
0670名前は開発中のものです。2007/04/09(月) 12:50:06ID:DSUlSx8P
>なんかdgdgね
ディグダグ?
0671名前は開発中のものです。2007/04/09(月) 19:56:01ID:6Hv4syfu
>>670
グダグダ
0672名前は開発中のものです。2007/04/09(月) 22:23:05ID:ntsmkKok
dgdgならディグダグで正解じゃないか?w
0673名前は開発中のものです。2007/04/09(月) 22:44:43ID:xQ5lPNOu
新しい描画プラグインってどうなの?
0674名前は開発中のものです。2007/04/10(火) 01:23:00ID:k7+XauZp
>>673
こんなのが数十行で出来る
http://thelaughingman.net/
0675名前は開発中のものです。2007/04/10(火) 01:59:10ID:E0BpcqA+
描画プラグインに新しいのが出たのか?
0676名前は開発中のものです。2007/04/10(火) 08:57:53ID:k7+XauZp
β晩にhspcvが追加されている
が、サンプルはない
0677名前は開発中のものです。2007/04/10(火) 09:00:39ID:k7+XauZp
haarcascade_frontalface_alt2.xml はぐぐれ
#include "hspcv.as"
cvbuffer ,280, 212
cvloadxml "haarcascade_frontalface_alt2.xml"
cvload "認識させたい画像"
cvfacedetect , 1.0
if 0 == stat {
mes "認識失敗"
}
facearea_num = stat
cvgetimg , 0
dim maskarea, 4
repeat facearea_num
cvgetface facearea(0), facearea(1), facearea(2), facearea(3)
mes ""+facearea(0)+","+facearea(1)+","+facearea(2)+","+facearea(3)
loop
とりあえずこんな感じで認識できるはず
0678名前は開発中のものです。2007/04/10(火) 12:05:36ID:BMeKgnLh
>>677
動いた おもすれー
0679名前は開発中のものです。2007/04/10(火) 19:02:17ID:wiWwQvgv
変数データを直接読み書きできるって事は
セーブ・ロードが簡潔にできるってことなのかな
0680名前は開発中のものです。2007/04/10(火) 21:54:45ID:XIsMa+6t
うん
0681名前は開発中のものです。2007/04/11(水) 05:13:37ID:SKNSOWMH
ノートパッドで切り出しとかやってセーブ・ロードに苦心してた事も
いい思い出に変わるのかな
0682名前は開発中のものです。2007/04/12(木) 21:07:33ID:22vncB1J
初心者用講座とか色々廻ってたけど
電卓作るあたりで挫折した
0683名前は開発中のものです。2007/04/12(木) 21:08:29ID:bCgTq/qC
盛りage
0684名前は開発中のものです。2007/04/12(木) 21:20:14ID:j0G3mdxP
>>677
顔じゃ無い部分が認識された
よく見ると顔みたいに・・・

心霊写真かと思ったよw
0685名前は開発中のものです。2007/04/12(木) 21:20:43ID:00Wev8Rd
電卓で挫折って・・・
0686名前は開発中のものです。2007/04/12(木) 22:32:55ID:cq6R8ing
なんのためにコンピュータ使ってんだろうなw
0687名前は開発中のものです。2007/04/13(金) 02:40:01ID:KoxYsYvL
こんぽじっとぱたーん・・・・??????

デジタル土方レベルのCかBASICしか出来ない香具師でも
力技だけでゲームを作れる言語作ってくれよ!


あ、もうあるか。
0688名前は開発中のものです。2007/04/13(金) 15:33:03ID:kkKSJW2x
10,200,30,60 00 ってテキストに書いておいて、
カンマ区切りで配列にしたいんですが、

notesel fileLoad
noteload "data.txt",0
sdim Fname,32000,999
getstr Fname,fileLoad,0,','
dialog Fname.1
dialog Fname.2

って書いてもダイアログには数字が表示されませんでした。
カンマ区切りのテキストファイルから配列を作るにはどう書けばいいのでしょうか。
0689名前は開発中のものです。2007/04/13(金) 15:59:15ID:a+Uovvd0
>>688
それじゃあ、最初の一つしか配列に渡されないよ
notesel fileLoad
;noteload "data.txt",0
fileLoad="10,200,30,60,00"
sdim Fname,32000,999
index=0
repeat
getstr Fname(cnt),fileLoad,index,','
index+strsize
if ','!stat {break} ;getstrで区切りキャラクタ以外で取り出された
loop
repeat
if Fname(cnt)="" {break}
dialog Fname(cnt)
loop
end

プラグイン hspdaの csvstrと間違えた?
こっちなら一行分なら一回で配列に代入される
(でもhspdaには色々バグがあるから注意)
0690名前は開発中のものです。2007/04/13(金) 18:14:32ID:kkKSJW2x
>>689
ありがとうございます。おかげさまでできました。
助かりました。
0691名前は開発中のものです。2007/04/13(金) 20:07:44ID:I5qoCwtL
>>669
それ必要なの?
0692名前は開発中のものです。2007/04/13(金) 20:30:21ID:fWNR28q6
おれ別人だけど、ヘルプ見ながらスクリプト打ち込みたいとか?
0693名前は開発中のものです。2007/04/14(土) 00:03:39ID:atoydD3j
>691
うん、ヘルプ見ながら打ち込むので俺には必要。
命令のパラメータさえ分かればいいから小さくして右上に出しっぱなしにしてたんだが。
今は画面の3分の2にエディタ開いて残りにヘルプ出してる。
ヘルプブラウザのreadme見ても何も書いてないから抹殺されたんだろうな。
0694名前は開発中のものです。2007/04/14(土) 01:44:52ID:8sg2zORJ
作者のページにBBSもあるんだし
ここで聞くよりも、作者に直接聞いた方がいいと思うんだが
0695名前は開発中のものです。2007/04/14(土) 13:46:00ID:atoydD3j
あるか、ないか、が聞きたかっただけだから。
なけりゃないで、やり方はあるから作者ページに書き込むほどでもないと判断した。
0696名前は開発中のものです。2007/04/14(土) 13:57:51ID:tSlK/VcG
今アイテム数20個毎にページを増やすように作ってるんだけど、
コレを16個毎にして16進数で管理すると簡便化できる?
0697名前は開発中のものです。2007/04/14(土) 14:21:07ID:XHCB7tyo
>>696
\式使えば楽
0698名前は開発中のものです。2007/04/14(土) 20:07:48ID:tSlK/VcG
ありがd
0699名前は開発中のものです。2007/04/15(日) 19:29:31ID:HlbFQmd9
HGIMG3の簡易コリジョン(AABB)は実装されてますけど、
パーツ毎判定みたいのはいつ頃に実装されるのかな?

あんまり実装遅いなら使いたくないけど、ランタイムなのが魅力的なんだよな〜
おにーたまHGIMG3スケージュルも出して欲しい
0700名前は開発中のものです。2007/04/16(月) 03:55:20ID:jNSmnASU
パーツっつーかポリゴン毎のコリジョンか?
かなり重くなると思うんで簡易的にやったほうが良いんじゃないかと思うんだが…。
0701名前は開発中のものです。2007/04/16(月) 10:10:37ID:bENpqRAl
hmm使ってフルスクリーンで動画再生するとキー入力受け付けなくなるんだけど
どうしようもないですか?
0702名前は開発中のものです。2007/04/16(月) 18:25:39ID:9S9SQQvC
256*224の解像度を512*448のウィンドウで2倍表示したいんですが、
directXを使う以外に方法はありませんか?
0703名前は開発中のものです。2007/04/17(火) 01:46:56ID:Zo18qgQY
>>702
>>623-624
07047022007/04/17(火) 07:26:05ID:/o1QDDuz
>>703
どうもッス。ファミコンぽいアクション作ってて、
gzoomだと透過色が使えないので困ってます。
0705名前は開発中のものです。2007/04/17(火) 11:40:10ID:Lf6HAn0k
>>704
読み込んだ後にgzoomで他のバッファにコピーしとけばいいだけじゃん
buffer 1
picload dir_exe+"\\sample\\demo\\jp6girl.bmp"
sx=ginfo(12)
sy=ginfo(13)
buffer 2,sx*2,sy*2
gzoom sx*2,sy*2,1,0,0,sx,sy
screen 0,640,480
gcopy 1,0,0,sx,sy/2
gmode 2
pos sx/2,0
gcopy 2,0,0,sx*2,sy

それか、表示用と違うバッファに画面を完成させてから表示用の画面にgzoom
0706名前は開発中のものです。2007/04/17(火) 17:21:04ID:jur7HrQ+
座標の扱いが違うけどgmode の設定が利くのもある
buffer 1
picload dir_exe+"\\sample\\demo\\jp6girl.bmp"
sx=ginfo(12)
sy=ginfo(13)
gsel 0
gmode 2,sx,sy ;コピー元の画像サイズ
pos 320,240+sy/2 ;画像の中心(gcopy等と違い指定した座標が中心に来る)
grotate 1,0,0,0,sx*2,sy*2

後gsquareってーのもあるけど、大量にコピーするのには向かないかな・・・


07077022007/04/17(火) 18:15:12ID:vZNpL9Pl
>>705 >>706
うお、その発想はなかったわ!
どうもありがとうございます。
0708名前は開発中のものです。2007/04/17(火) 22:14:21ID:bRIENLRO
最近hsp2.6でhspdxのプラグインを使ったSTG作ってるんだけど
壁に自機弾と敵弾があたると、自機弾と敵弾が消えるようにしてるんだけど
稀に弾がすり抜ける時がある。
これって敵弾と自機弾が同時に壁に衝突した時にすり抜けるのかね?
自機弾のタイプ値2
敵弾のタイプ値8
400は壁のスプライト番号
es_find a,10,a
if a=-1:return
es_check b,a,32,1,400,400
こんな感じなんだけど。
すり抜けないよう対処法を教えて欲しい。
0709名前は開発中のものです。2007/04/17(火) 22:19:51ID:2AXbs49U
単に弾の移動量が自機の判定より大きくて抜けちゃってるだけじゃないの?
0710名前は開発中のものです。2007/04/17(火) 23:06:48ID:H8BcVo3o
壁との当たり判定なんてスプライトの判定命令じゃなくて計算でやれ
0711名前は開発中のものです。2007/04/17(火) 23:19:06ID:bRIENLRO
>>709
確かに移動速度も影響あるけど
速度を遅くしてもやっぱり同時に衝突するとすり抜ける。

で、対策を考えたんだけど
単純に衝突のサブルーチンを2つにする事により
2発動時に衝突してもOKになったみたい。
この時点で全くすり抜けなくなった。
サブルーチンを3つにすれば3発同時もOKかな。
0712名前は開発中のものです。2007/04/17(火) 23:32:40ID:I7JDTHxT
>>711
hspdxって使ったことないんだが、そのes_checkって当たってるスプライト1つしか返さないんだな。
自前でやったほうが簡単そうだな
0713名前は開発中のものです。2007/04/17(火) 23:48:03ID:bRIENLRO
es_checkはもし同時に衝突してたらスプライト番号が低いほうが優先される仕組みになってる。
少しでも衝突タイミングが違えば問題ないんだけど。
あと、一度すり抜けたスプライトはすり抜け中に再び衝突判定が得られにくい。
すり抜けてる最中に他のスプライトとの衝突判定が起きるから。
あと俺の使ってるのはhspdxじゃなくてhspfixの間違いでした。
0714名前は開発中のものです。2007/04/17(火) 23:49:00ID:2AXbs49U
>>711
ああすまん、ちゃんと読んでなかった。壁なw

>>712
判定を始めるスプライト番号を指定できるから、ひとつ見つかったら
その番号の後から再検索すれば良い。
07157142007/04/17(火) 23:51:13ID:2AXbs49U
自己レス
>判定を始めるスプライト番号を指定できるから
そんなもん無かったw
勘違い
0716名前は開発中のものです。2007/04/17(火) 23:52:08ID:BKWD+g7L
>>711
つーか一回当たったら判定処理から抜けてるだけじゃねーのか?w

で、使ってるのはhspdxfixだろ?
*sub
es_find a,10,0
if a=-1:return
repeat
es_check a,400,10,1,a
if a=-1:break
消す処理
a++
loop
return

これでいんじゃねーの?
0717名前は開発中のものです。2007/04/17(火) 23:52:31ID:M+5M3LEd
>>708
その3行の前後の処理が分からないけど
出現してる敵・自機弾に、
漏れなく壁接触判定を行き渡らせるのなら
2行目のreturnが実行されるまで、
繰り返し処理をしないといけない。

*hitcheck
es_find a,10,a
if a=-1:return
es_check b,a,32,1,400,400
(bに対する何らかの処理)
goto *hitcheck


つーか、
そのプログラムを組むとしたら

*wallhitcheck
es_check b,a,10,1,400,400
if b<0: return
(bに対する何らかの処理)
goto *wallhitcheck

で済むんじゃないか?

checkのタイプ値32の説明がないから
このままでは不都合あるのかもしれないけど
0718名前は開発中のものです。2007/04/17(火) 23:54:36ID:M+5M3LEd
間違えた。

*wallhitcheck の次の行
es_check b,400,10,1,400,400

だな。
0719名前は開発中のものです。2007/04/17(火) 23:55:01ID:BKWD+g7L
>>713
やっぱりfixかw

>>715
大丈夫fixだから指定できるw
0720名前は開発中のものです。2007/04/17(火) 23:58:44ID:bRIENLRO
1回衝突判定が終ったら弾スプライトに+1してループさせてる。
それでもすり抜ける。
0721名前は開発中のものです。2007/04/18(水) 00:11:22ID:I6KwsLu+
>>720
まぁ何だ。

似たような事をやったことあるけど
問題なくDXFIXで衝突判定できてたぞ。

アルゴリズムが悪いか、
>>713の書き込みから明らかだが
なんか大きな勘違いしてるんだろ。


>es_checkはもし同時に衝突してたらスプライト番号が低いほうが優先される仕組みになってる。
同じフレームで、続きから走査すれば、同時に衝突した
「スプライト番号が高いほう」のスプライトが見つかりますよ

> あと、一度すり抜けたスプライトはすり抜け中に再び衝突判定が得られにくい。
> すり抜けてる最中に他のスプライトとの衝突判定が起きるから。
お前は何を言っているんだ。
0722名前は開発中のものです。2007/04/18(水) 00:16:03ID:7jAYZaBw
スプライト番号が高いのが優先されるかどうかはどうでもいいから適当に書いた。
すまんかった。
後半の文はちょっとわかり辛かったかな。
まあ大した事無い事なので訂正しなかったけど。
まあまだゲーム製作初めたばっかりだから勘違いしてる所は結構あると思うけど。
とりあえずもう少し勉強してみます。
0723名前は開発中のものです。2007/04/18(水) 00:47:39ID:7jAYZaBw
プログラミングよりも日本語や人間としての常識の勉強が必要だったようです。
スレ汚しして申し訳ございませんでした。
■ このスレッドは過去ログ倉庫に格納されています