プチコン3号 SmileBASIC コミュニティトピックこう subwars2016/10/05 22:36:57質問SPの数を検出するには?スプライトAを中心に、一定の距離にあるスプライトを数えるにはどうしたら良いでしょうか? 範囲内にはいくつのSPがあるかが知れれば十分ですが、出来れば管理番号が保存出来るとありがたいです2そうだね 9返信プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿だにえる haru2016nen2016/10/5 22:49処理速度を無視するならSPHITRCかな もしくは SPFUNCで 「範囲内にいたら管理番号を返す」 ような処理をさせるか。1そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿だにえる haru2016nen2016/10/5 22:51上のSPFUNCの場合、 PUSHとLENで数が調べられると思います。0そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿みむ*mim hidemimtp2016/10/5 23:17単発で求めるなら、対象となるSP番号の範囲をFORで回して、SPUSEDがTrueならAとの距離を計算。範囲内だったらスプライト番号を変数配列にPUSHしていけばいいと思います。 毎フレーム求めるならちょっと工夫しないと重くなる場合があるかも。 距離は(Xの差の2乗+Yの差の2乗)をルート(SQR)すれば求められます。 3そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿Villit nakahara12262016/10/6 3:44力技でなら、透明なSPを一つ用意して、 そいつを円形に回してぶつかった数を数えればいい2そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿Hanzo rzsense2016/10/6 21:15今までに出てきた皆さんのご意見のいいとこ取りをしたような関数を作ってみました。 添付のSPCTR関数は、管理番号Nのスプライトを中心に、半径Rの円内にあるスプライトの数を返します。ただし、管理番号Nのスプライトはカウントしません。 SPHITRCを使っているので、カウント対象のスプライトは全てSPCOLで衝突判定を有効にしておく必要があります。 ちょっとした改造で、カウント対象スプライトの管理番号を配列に保存する、なども可能になるはずです。 以上、ご参考まで。 3そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿こう subwars2016/10/6 21:50皆さん回答ありがとうございます 浮上率低いので返信出来ずすみません SPHITRCというのは遅いのでしょうか?0そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿みむ*mim hidemimtp2016/10/6 23:15SPHITRCが遅いわけではなく、毎フレーム(1秒間に60回)、スプライト番号0~511の512枚に対して、その番号が存在するか、存在したら座標が範囲内か、という調査をすると大変な量ですよね。 調査するスプライト番号が例えば10~19までの最高10個、とかで決まっていれば重くはならないと思います。2そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿Hanzo rzsense2016/10/7 8:20SPHITRCと、三平方の定理による判定ならば、断然、前者の方が速いです。ただし、SPHITRCでは、円形領域の判定ができません。 先の私のSPCTR関数では、SPHITRCで調査対象スプライトを絞り、それらについてのみ、三平方の定理で距離の計算を行うことで、時間の節約を図ります。範囲内に余程スプライトがウジャウジャいない限りは、実用的な速度で運用できると思います。2そうだね プレイ済み2017/11/03 17:48:48に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿あきと SideBurnsM2016/10/7 14:06私もサンプルを作ってみました。 【X32473HE】ファイル名「CIRCLEIN」 下画面にランダムでスプライトが配置されて中央に魔女がいます。 画面をタッチすると円が表示されて、円の中のスプライトは赤くなります。 ソースの「@RADER」「@CIRCLEIN」の箇所が判定処理になります3そうだね プレイ済み2017/11/03 17:48:48に取得