あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/23(Mon) 20:30
No.11891
|
|
|
|
|
質問です。ブロックの当たり判定のことなのですが pat_map+0という感じにやりますよね? それを増やすにはどうすればいいのでしょうか?
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/23(Mon) 20:32
No.11892
|
|
|
|
すみません 調べてみたら自己解決しました本当にすいません
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/23(Mon) 20:36
No.11893
|
|
|
|
自己解決したようでしてませんでしたすみません 普通に並べるだけでよいのでしょうか? どうすればいいのでしょうか?
|
Re: あたり判定?
投稿者 : イッカ!(p7242-ipad405hodogaya.kanagawa.ocn.ne.jp)
- 2008/06/23(Mon) 21:44
No.11894
|
|
|
|
毎度どうも、無駄に長文のイッカ!です(
>質問です。ブロックの当たり判定のことなのですが >pat_map+0という感じにやりますよね? >それを増やすにはどうすればいいのでしょうか?
情報が浅いです、もっと入れてくれないとわけわかめになっちゃいまs(( ----- 1.なんのゲームですか? 2.pat_map+0では只のマップチップ。前後の部分も書いてください 3.できればUsrを投下してください。 ----- お願いしますm(_ _)m
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/23(Mon) 22:02
No.11895
|
|
|
|
情報の浅い質問すみませんでした 今のところマップにブロックを2個使っているのですが、 1個のときはわかるのですがどういう風に書けばいいのかわかりません。
あたり判定かどうかわかりませんが僕が当たり判定と言っているのはそのブロックの場所が通れなくなるということです。
>2.pat_map+0では只のマップチップ。前後の部分も書いてください
if ($map.getAt(x,y+16)==$pat_map+2) こんな感じのやつです
|
Re: あたり判定?
投稿者 : イッカ!(p7242-ipad405hodogaya.kanagawa.ocn.ne.jp)
- 2008/06/24(Tue) 00:11
No.11896
|
|
|
|
-要約--------- マ○オみたいなアクションゲームで、ブロックの画像を2種類に分けて使っている。 その両方の種類で当たり判定をしたい。 --------------
えーっと……くっくさんはコピぺ派ですか? だとしたら止めた方がいいですよw 応用が利かないので、疑問だらけになりますorz ちゃんと一つ一つの文を理解して、次の行程に進みましょう♪
-文解説-------- ●if (〜〜) ○○ もし〜〜なら○○をする、という意味。
●$map.getAt(x,y+16) == $pat_map+2
・$map.getAt マップ上の指定した1ドットが何のマップ画像かを調べます。 ・(x,y+16) 自機と同じX座標の中の、16ドット下の部分。 いわゆる足下 ・==$pat_map+2 $pat_map+2と同じ
つまり →自機の足下が$pat_map+2
となるとこの文の意味は →「もし自機の足下が$pat_map+2なら」 となります。 ------------
では今回の場合はどうすればいいでしょう? 答えは簡単、「自機の足下が$pat_map+2」という条件式に「もしくは$pat_map+3なら」を追加すれば良いんですb
-ヒント----- ・もしくは→|| -----------
では頑張ってくださいbb
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/24(Tue) 16:40
No.11897
|
|
|
|
if ($map.getAt(x,y+16)==$pat_map+1||$pat_map+2) これでもし自機の足もとが$pat_map+1もしくは$pat_map+2なら という文章になるんでしょうか?
|
Re: あたり判定?
投稿者 : イッカ!(p4015-ipad50hodogaya.kanagawa.ocn.ne.jp)
- 2008/06/24(Tue) 23:50
No.11898
|
|
|
|
考え方はあってます。ただ文が違うだけです、正しくは
if ($map.getAt(x,y+16)==$pat_map+1 || $map.getAt(x,y+16)==$pat_map+2)
です(多分) ひょっとしたら($pat_map+1 || $pat_map+2)でも出来るかも知れませんw 普段&&ばっか使ってると分からなくなる|||orz ではb
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/25(Wed) 19:30
No.11900
|
|
|
|
if ($map.getAt(x+16,y)!=$pat_map+1 || $map.getAt(x,y+16)!=$pat_map+2) x=x+2; もし自機の足もとが$pat_map+1もしくは$pat_map+2ならX+2 という風にしてみたのですが、なぜかpat_map+2だけ通れてしまいます。なぜでしょうか?
|
Re: あたり判定?
投稿者 : イッカ!(p4015-ipad50hodogaya.kanagawa.ocn.ne.jp)
- 2008/06/25(Wed) 21:19
No.11901
|
|
|
|
よ〜く、自分の書いた文を見てください。 何か違うはずですよb
注※「〜〜なら」というのは「==」です。 「!=」は「〜〜でなければ」という否定に近い意味になります。
注2※「足下」というのは「y+16」ですよb
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/25(Wed) 21:45
No.11903
|
|
|
|
すみません 足もとじゃありませんでした 隣でした すいません
|
Re: あたり判定?
投稿者 : くっく(245.114.44.61.fbb.aol.co.jp)
- 2008/06/25(Wed) 21:58
No.11904
|
|
|
|
やっとプログラムの意味を理解しました ありがとうございます if ($map.getAt(x+16,y)==$pat_map+0)x+2; こうすればいいんですね? これなら もしx+16がpat_map+0ならx+2 なのでpat_map+0以外は通れないというふうにできるんですね ありがとうございました
|
Re: あたり判定?
投稿者 : メリッサ(p052.net059086017.tnc.ne.jp)
- 2008/06/28(Sat) 11:52
No.11905
|
|
|
|
ややこしく感じるようでしたら無視してくれて結構ですけど、
マップチップの種類が増えてくると プログラムを書くのが面倒になってきます。
たぶん、しばらく経つとそういう問題に当たります。
例えば、 $pat_map+0 $pat_map+1 $pat_map+2 $pat_map+3
が、通り抜けられないブロックだとしますね。
それを書く場合、 if ($map.getAt(x+16,y)==$pat_map+0 || $map.getAt(x+16,y)==$pat_map+1 || $map.getAt(x+16,y)==$pat_map+2 || $map.getAt(x+16,y)==$pat_map+3)x+=2;
と書く代わりに if ($map.getAt(x+16,y)=>$pat_map+0 && $map.getAt(x+16,y)=<$pat_map+3)x+=2;
と書けばずいぶん短くなります。
つまり、 $pat_map+0から$pat_map+3までのブロックを範囲で指定して一つずつ書く負担を減らしています。
注意してほしいのが && でつなげられている所です。 || じゃありませんよ。
ややこしいようでしたら、無視してください。m(u_u)m
|
Re: あたり判定?
投稿者 : :-3(p6135-ipbfp02kobeminato.hyogo.ocn.ne.jp)
- 2008/07/09(Wed) 11:11
No.11906
|
|
|
|
1枚の画像の全てのマップに当たり判定をつけるには どのように書けばいいんですか? 作りすぎて80個ぐらいあります。
|
Re: あたり判定?
投稿者 : イッカ!(p6119-ipbf703hodogaya.kanagawa.ocn.ne.jp)
- 2008/07/09(Wed) 15:51
No.11907
|
|
|
|
メリッサさんのやり方を参考にしましょうb
例えばmap+14からmap+46までに当たり判定を付けたいなら
$map.getAt(x,y) => $pat_map+14 && $map.getAt(x,y+16) =< $pat_map+46)
という感じで出来ます。
○ =< ●・・・○は●以下、 ○ => ●・・・○は●以上という意味です(
つまりこの文は、「自分の居る所がmap+1〜map+80の中のどれかなら」という意味になります(´ω`) 後は自力で繋げてくださいbbb
|
Re: あたり判定?
投稿者 : :-3(p6135-ipbfp02kobeminato.hyogo.ocn.ne.jp)
- 2008/07/11(Fri) 23:32
No.11908
|
|
|
|
また増やしちゃって、129個になってしまいました。(笑)
$map.getAt(x+16,y)==$pat_map+0||$map.getAt(x+16,y)==$pat_map+1 || $map.getAt(x・・・ ・・・+16,y)==$pat_map+127 || $map.getAt(x+16,y)==$pat_map+128)
こうやってたのを
$map.getAt(x,y) => $pat_map+0 && $map.getAt(x,y+16) =< $pat_map+128
こうやったら、
文法エラーで引っかかっちゃいました。 (涙) どういうことでしょうか。
|
Re: あたり判定?
投稿者 : イッカ!(p6119-ipbf703hodogaya.kanagawa.ocn.ne.jp)
- 2008/07/12(Sat) 14:26
No.11909
|
|
|
|
あ、ごめんなさいw
「=>」→「>=」 「=<」→「<=」
でしたorz 普段「>」と「<」しか使ってないので…^^;
|
|