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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0311
ライトes_checkの使い方2解決


ライト

リンク

2009/3/11(Wed) 20:16:18|NO.23825

hspdxfixを使い始めましたところ、es_checkがよく分からず使えません。
お分かりになる方がいれば、教えてください。

1、es_sizeで登録、判定を100に
2、patしてsetしてスプライトで描画>更新
3、一つのスプライトを動かして衝突させる
4、es_checkで監視しても常にー1で、衝突を検出できない。
以下スクリプト

#include "hspdxfix.as"
;[ESC]キーで終了
;------------------------------------------------------------------
es_ini ; system初期化
es_screen 800,600,32,0,1,1 ; スクリーン初期化(32でウィンドウデバックモード、3D使用)
if stat=1 : goto *dderr1
if stat=2 : goto *dderr2
goto *start ; 正常に完了

*dderr1: dialog "DirectXの初期化に失敗しました。",1: end
*dderr2: dialog "スクリーンの初期化に失敗しました。",1: end
*dderr3: es_bye: wait 100: dialog "VRAMの容量が不足しています。",1: end
;------------------------------------------------------------------
*start

buffer 1,800,600: picload "chip4.bmp": ;なんでも可(50*100以上)
es_buffer 1,0: if stat:goto *dderr2

es_size 50,50,100 ;サイズ5050で、判定領域100%
es_pat 10,50,0: es_set 10,100,400,10 ;10番に登録 初期位置100400
es_pat 10,100,0: es_set 2,600,400,2 ;2番に登録 初期位置600400

gsel 0
a=1:p2=0

*mloop ;ループ開始
getkey p1,13 ;終了用ENTER

if a=1: a+: es_adir 2,48,100 ;一回だけ左へ動かす命令
if a=2: a+: es_adir 10,16,100 ;一回だけ右へ

gosub *che ;ここでチェックしたいが、無反応(常にー1)

es_draw
es_sync
await 0
es_cls 2

if p1=1: end ;終了
goto *mloop

end

*che
es_check p2,2
if p2>0: title "重なった"+p2: wait 500: end
if p2<0: title "重ならない"+p2
return

adirではなく、es_posでもできませんでした。(p2が常にー1)



この記事に返信する


エコQ

リンク

2009/3/14(Sat) 00:51:04|NO.23867

21行目(かな?)の

es_pat 10,100,0: es_set 2,600,400,2 ;2番に登録 初期位置600400
最初の es_pat命令のパラメータ1に与えられている 10 は、
2 の間違いだと思いますが、これを訂正すると、衝突判定されます。

10 のままだと、表示される画像も、
意図しているものと違ってくるはずなのですが…



ライト

リンク

2009/3/14(Sat) 10:11:05|NO.23874

ああ、本当だ。できました〜〜〜
ありがとうございます。



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