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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0116
ブロック当たり判定について6解決


ブロック

リンク

2009/1/16(Fri) 11:00:35|NO.22875

現在ブロック崩しを作成中ですが、ねずみ色ブロックの上下角に当たると
そのまま動かなくなってしまうことがあるのです
いろいろと考えてみたんですがうまくいかないのです

もし良かったら誰か教えていただけるとありがたいです


http://cid-859a75f8c21f69d6.skydrive.live.com/self.aspx/HSP3/geme.zip



この記事に返信する


SYAM

リンク

2009/1/16(Fri) 11:49:11|NO.22877

場当たり的ですが、一応対処はできます。


その前に、まず問題を再現させるために、ラケットの初期位置をrx=324 にしてください。
実行すると問題が発生することを確認してください。

問題が発生したことを確認したら、

ブロックに当たったボールの速度を反転したとき(2箇所)に、同時に

reflect=1
…とでもしておいて、
//ボールのブロックに対する当たり判定//のループの前で

if reflect = 1:reflect=0:return
……のようにします。
これで実行してみてください。


問題は、ブロックの当たり判定に引っかかって速度反転した後、次の移動で当たり範囲から逃れきれてないためにまた反転してブロックにめり込んでいることです。
↑の変更によって、ブロックに当たって反転した直後だけは、ブロックとの当たり判定を無視するようにしています。


ついでに。
一番最後のrankerrラベル内の処理にスペルミスがあります。
 wparan → wparam に修正しましょう。



ブロック

リンク

2009/1/16(Fri) 13:35:02|NO.22879

ねずみ色ブロックにめり込まなくなったんですけど
なんか、「サブルーチンやループのネストが深すぎます」というエラーが表示されました



SYAM

リンク

2009/1/16(Fri) 14:20:44|NO.22881

先に挙げた修正ではreturnを追加しているだけですから、そのエラーが出てしまう原因にはなりません。
パッと見たところではクリアした時の流れに明らかな問題があります。


デバッグウインドウの「全般」タブの「sublev」を観察しながらゲームをやってみてください。
この値は、

サブルーチンを呼び出したら +1
returnで戻ったら -1

というものです。



ブロック

リンク

2009/1/16(Fri) 15:08:30|NO.22883

変更してみましたのでもう一度見てもらえませんか?
URLは先ほどので大丈夫です



SYAM

リンク

2009/1/16(Fri) 16:10:14|NO.22890

「if reflect〜」を挿入する箇所をまちがえています。
変更の意味を考えてみてください。

※というか挿入する位置も書いてあったのになぜループの「中」に入れたんですかー。

それと、クリアした時の処理の流れもおかしいままなので、先に書いた方法で調べてみてください。
gosubでジャンプした先からさらにgotoやgosubを使う場合は、じゅうぶんな注意が必要です。



ブロック

リンク

2009/1/16(Fri) 16:51:13|NO.22891

ねずみ色ブロックのめり込みが直りました
わかりやすく教えていただいて本当にありがとうございました



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