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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0823
03Q5ブロックのあたり判定5解決


03Q5

リンク

2011/8/23(Tue) 08:38:52|NO.40814

画像からpget命令でXY座標を読めたのですが、
ブロックの4方向のあたり判定がどうしても
ずれてしまいます。
どのようにすればいいでしょうか?
ちなみに、自キャラ、ブロックともに32×32ドットです。



この記事に返信する


zone

リンク

2011/8/23(Tue) 10:47:53|NO.40816

そうだね、考えられる理由としては
スクリプト自体が間違っているとかじゃない?
ここにスクリプトを載せる意外に解決方法はないと思うぞ!
それとpgetでブロックの座標を読み取れたということなら
>画像からpget命令でXY座標を読めたのですが、
それは、描画の時に座標を配列か何かへ格納しておいたほうが便利だと思うよ
いろいろとね。
もうこれ以上はスクリプトを見る以外にわからないです。



03Q5

リンク

2011/8/24(Wed) 08:40:20|NO.40829

これが、スクリプトです。
pre

repeat 10
Y=cnt

repeat 30
gsel 3 :pget cnt,Y :gsel 4
if (rval=0)&(gval=0)&(bval=0) :pos cnt*32,Y*32 :gcopy 2,128,0,32,32
loop
loop

gsel 0
gmode 2


screen 0,1024,480
gmode 2
MO=0
MOO=0
MX=200
repeat
redraw 0
T+=1




gsel 3 :pget MX/32,MY/32 :gsel 0
;if (rval=255)&(gval=255)&(bval=255) {
;if :JUMP=1

if (rval=0)&(gval=0)&(bval=0) {
if (cnt*32<MX) :MX=OMX-16
if (Y*32>MY) :MY=OMY-20 :ST=1
if (cnt*32+32-14>MX) :MX=OMX
if (Y*32+32<MY) :MY=OMY+32
}


OMX=MX
OMY=MY

pos 0,0 :gcopy 4,0,0,640,480
pos MX,MY :gcopy 2,32*MO,32*MOO,32,32

/pre



info

リンク

2011/8/24(Wed) 09:55:44|NO.40830

先頭の2重ループの


repeat 10 Y=cnt repeat 30 gsel 3:pget cnt,Y:gsel 4 if (rval=0)&(gval=0)&(bval=0) :pos cnt*32,Y*32 :gcopy 2,128,0,32,32 loop loop
 の部分ですが、一体これは何をしているのでしょうか?
 多分スクリプトの写し間違いか何かだと思いますが
 pget は color と同じく、現在のスクリーンに色をセットしますので。
 ウィンドウを切り替えたら、セットした色がそのウィンドウのものになるはずです。


screen 0 title "screen 0 : color 255" color 255 screen 1 title "screen 1 : color,,255" color,,255 gsel 0 boxf color 255,255,255 mes "赤が表示されるはず" gsel 1 boxf color 255,255,255 mes "青が表示されるはず"

よって下のように一度、変数に、値を代入する必要が有ります。


repeat 10 Y=cnt repeat 30 gsel 3:pget cnt,Y rval=ginfo_r : gval=ginfo_g : bval = ginfo_b gsel 4 if (rval=0)&(gval=0)&(bval=0) :pos cnt*32,Y*32 :gcopy 2,128,0,32,32 loop loop

pget によって 取得した色を、他のウィンドウで使用する際には、面倒な作業となりますが
そのほかの場面や、システム的には合理的な形です。



祐矢

リンク

2011/8/24(Wed) 16:46:57|NO.40834

あまりキレイな修正ではありませんが、もしかするとこうでしょうか?
地形とそのアタリ判定をBMP画像から拾うものだとしています。
キャラを動かす部分が無かったので、仮に28行目辺りに作ってあります。


buffer 2,160,32 :cls 1 :color 64,64,64 :mes "自機アニメアニメ壁壁" ;おそらくここにpicload、自キャラの4コマアニメ(?)と壁が描かれる buffer 3,30,10 :font "",10 :mes "木" ;地形データ。rval=0、gval=0、bval=0の場所に壁を作る buffer 4,640,480 repeat 10 Y=cnt repeat 30 gsel 3 :pget cnt,Y :gsel 4 if (rval=0)&(gval=0)&(bval=0) :pos cnt*32,Y*32 :gcopy 2,128,0,32,32 loop loop gsel 0 gmode 2 screen 0,1024,480 gmode 2 MO=0 MOO=0 MX=200 repeat redraw 0 T+=1 stick K,15 if K&1 :MX-=2 if K&2 :MY-=2 if K&4 :MX+=2 if K&8 :MY+=2 gsel 3 :pget MX+32/32,MY+16/32 :gsel 0 ;キャラの右の位置を判定 修正箇所はこの8行 if (rval=0)&(gval=0)&(bval=0) :MX=OMX-4 gsel 3 :pget MX+16/32,MY+32/32 :gsel 0 ;キャラの下の位置を判定 if (rval=0)&(gval=0)&(bval=0) :MY=OMY-4 gsel 3 :pget MX/32,MY+16/32 :gsel 0 ;キャラの左の位置を判定 if (rval=0)&(gval=0)&(bval=0) :MX=OMX+4 gsel 3 :pget MX+16/32,MY/32 :gsel 0 ;キャラの上の位置を判定 if (rval=0)&(gval=0)&(bval=0) :MY=OMY+4 OMX=MX OMY=MY pos 0,0 :gcopy 4,0,0,640,480 pos MX,MY :gcopy 2,32*MO,32*MOO,32,32 redraw 1 await 30 loop

rvalなどからHSP2のスクリプトであると分かりますが、HSP2用と明記すると返信をもらい易いと思います。



03Q5

リンク

2011/8/25(Thu) 22:10:39|NO.40857

有難う御座います。
何とかやってみます。



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