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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0715
ぴーち当たり判定 わからん4解決


ぴーち

リンク

2017/7/15(Sat) 19:36:50|NO.80601

初心者です。
当たり判定がわかりません。
例えば、主人公は"●"
x:20 y:20の箇所に当たったらend
をif文にしてください



この記事に返信する


ソラ(元スペース)

リンク

2017/7/15(Sat) 20:02:28|NO.80605

名前は統一したほうが今までの質問の流れなどがわかり、的確な回答をもらいやすくなります。
当たり判定に関しては以下のサイトが参考になるかと。
http://hsp.tv/play/pforum.php?mode=pastwch&num=18036



kino

リンク

2017/7/16(Sun) 07:42:55|NO.80608

矩形の判定をしないなら、こんな感じ(^^;

repeat stick s if s & 1 : x-- if s & 2 : y-- if s & 4 : x++ if s & 8 : y++ color 255,255,255 boxf color 0,0,0 pos x*10,y*10 mes "●" title "x="+x+" y="+y if x=20 & y=20 : end await 30 loop



はんげつ!

リンク

2017/7/16(Sun) 23:10:39|NO.80634

こんなかんじですかね...
終わるときが一瞬なので、バグではありません。
私も初心者なので、少し見づらいかもしれません。
x = 0 : y = 0 ;変数を宣言
repeat ;ループ開始
pos x,y;主人公(●)のポジション
mes"●";主人公
pos 20,20;障害物(■)のポジション
mes"■";障害物
stick kk ;キー入力情報
if kk = 1 : x - 20 ;[←]
if kk = 2 : y - 20 ;[↑]
if kk = 4 : x + 20 ;[→]
if kk = 8 : y + 20 ;[↓]

if x = 20 and y = 20 : end ;●が■に触れたら 終わる
await
cls
loop

自分での勉強もしてくださいね・・・。
がんばってください!!



沢渡

リンク

2017/7/17(Mon) 23:48:59|NO.80650

仮に、自機の座標を(x0,y0)、障害物の座標を(x1,y1)とし、かつ、
自機の大きさを20×20、障害物の大きさを30×30とした場合、
以下の条件を全て満たしていれば、「自機が障害物に当たった」と判断できます。
・x0>x1-20
・x0<x1+30
・y0>y1-20
・y0<y1+30
(なぜこうなるのかは、実際に動かしてみればわかると思います)


screen 0,640,480,0 buffer 1,20,20,0 : gsel 1 //自機用のバッファ color 0,0,255 : boxf buffer 2,30,30,0 : gsel 2 //障害物用のバッファ color 255,0,0 : boxf gsel 0 x0=0 : y0=0 //自機の座標 x1=100 : y1=100 //障害物の座標 color 255,255,255 key=0 repeat stick key,15 //キー入力チェック 15は非トリガータイプ指定(1+2+4+8=15) if key&1 : x0-4 //左 if key&2 : y0-4 //上 if key&4 : x0+4 //右 if key&8 : y0+4 //下 x0=limit(x0,0,620) //画面からはみ出さないようにするための処理(640-20=620) y0=limit(y0,0,460) //同上(480-20=460) redraw 0 boxf pos x0,y0 : gcopy 1,0,0,20,20 //自機を表示 pos x1,y1 : gcopy 2,0,0,30,30 //障害物を表示 redraw 1 if (x0>x1-20)&(x0<x1+30)&(y0>y1-20)&(y0<y1+30) : break //当たり判定 await 30 loop dialog "接触しました" end



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