プチコン3号 SmileBASIC コミュニティプレイ日記ごごちー gogochii2016/10/31 17:57:19質問です N秒ごとにスプライトが発生し左から右に移動し続けるにはどうすればよいでしょうか…5そうだね 29返信プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿でんぺん DENPEN2016/10/31 19:00とりあえず考え方としては、メインループの中で一定時間(N)毎に出現用のプログラムを実行します。 一定時間のカウントはシステム変数のMAINCNTを使うのが便利だと思います。 出現処理は、使用できるスプライト管理番号を求めて、そのスプライトを表示します。そしたらSPANIMで左から右に動かすのが手っ取り早いと思います。 出現したスプライトは不要になったら(画面外など)消さないと、いずれ管理番号が不足するので注意してください。 SPANIMを使わない場合は、出現しているスプライトを毎フレーム右に動かす処理が必要になります。 出現中のスプライトの処理では、スプライトコールバック呼び出しのCALL SPRITEを使うと便利なのですが、この命令はバージョンアップ後に増えたものでもあるし、初心者はちょっと手間取るかもしれません。わかると難しい機能では無いのですが…。 1そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿スー thanks_0u02016/10/31 19:19概ね説明はされていますので、CALL SPRITEの使い方について補足をば(・д・) 1.まずSPにさせたい処理(サブルーチンかDEF)を書きます。SP番号にCALLIDXを使う以外は普通に書いて大丈夫です。 2.SPSETのすぐ後に、SPFUNCで先ほど書いた処理を指定します。これで「お前の動きはここに書いてあるからー」って教えたことになります。 3.ループ内でCALL SPRITE!これで、各SP達はさっき言われたところを見て動きます。 例えば2.で、クリボーにはクリボーの動き、ノコノコにはノコノコの動き、を教えてあげれば、CALL SPRITEするだけでその通りに動き始めます。 一定時間毎に敵が湧く、ってケースでは「もし画面外に出たらSPCLR」っていう処理をSPFUNCで教えてあげると、無限に敵が湧き続けるようになります。とても便利です(・u・)4そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿ごごちー gogochii2016/10/31 19:56皆さんありがとうございます! SPANIMの”XY”の変更の使い方がよくわかりません0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿でんぺん DENPEN2016/10/31 20:01そのSPANIMの場合、今いるスプライトの位置から、 1:-200なので200フレームでX:400, Y:132+DY[I]*16の場所に移動する。 2:次に-30なので30フレームでX:200, Y:100の場所に移動する。 3:ループ回数が指定されてないので上記の1と2を無限ループする。 という動作になるはずです。合ってますか?1そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿ごごちー gogochii2016/10/31 20:07なるほど ということは一方向に等速で動かす場合、座標は一つでいいと言うことですね!0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿でんぺん DENPEN2016/10/31 20:10そうですね〜。あとループさせないのだったら、最後に,1をつけてループ回数1を指定するといいですよ。構文的には、 SPANIM 管理番号,"アニメ対象",時間1,項目1[,項目2] [,時間2,項目1[,項目2]]… [,ループ] こんな感じなので、ループ回数を省略は出来ますが省略すると無限ループになります。0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿ごごちー gogochii2016/10/31 20:11どうしても等速にならないです...0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿でんぺん DENPEN2016/10/31 20:15100フレームでX:400, Y:132+DY[I]*16の場所に移動する。 となってますが、スタート地点はどこですか? スタート地点はあらかじめSPOFSなどで指定してその場所にスプライトを表示しておく必要があります。 あとそのSPANIMって何度も呼び出されてないですよね? 何度も(毎フレーム)呼び出すと、その度にアニメが初期化されて予想外の動作になってしまいます。 0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿ごごちー gogochii2016/10/31 20:16画面右端にたどり着かず速度を落として止まったりします><0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿ごごちー gogochii2016/10/31 20:19スタートは左側、画面外です0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿でんぺん DENPEN2016/10/31 20:19なんとなくSPANIMを何回も呼び出してしまっているような気がするのですが違いますか? SPANIMは一度呼び出したらアニメーションが終わるまでは同じ動作を呼びだしてはいけません。 なんとなくそのあたりの処理が間違っているような気がするのですが…0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[13]親投稿ごごちー gogochii2016/10/31 20:45なんとなく画面左端から現れる瞬間急減速している気がしますができました!ありがとうございます!0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[14]親投稿でんぺん DENPEN2016/10/31 21:09出来たのは良かったです! ただぱっと見ですが@SPMOVEが毎回呼び出されているように感じるんだけど大丈夫なのかなぁ? 全体を見てないので何とも言えませんが、ちょっと気になる点も多いので、その辺を気をつけて確認してみてくださいねー。1そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[15]親投稿ネタバレでんぺん DENPEN2016/10/31 21:12スーさんの説明したCALL SPRITEも含めて、僕が始めに説明した内容を簡単なサンプルにしたものを作ってみたので参考に載せますね。 サンプルで聞きたいことがあれば答えますが、とりあえずそんな感じのやり方の一つでした。今後の参考になればと言う感じです。 頑張ってください!1そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[16]親投稿ごごちー gogochii2016/10/31 22:19ありがとうございます!! ぜひぜひ参考にします!0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[17]親投稿ごごちー gogochii2016/10/31 22:26こうですかね? 確かに異常があったので修正しました!重ね重ねありがとうございますー!0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[18]親投稿でんぺん DENPEN2016/10/31 22:50良かったです! あとちょっと気になってるんですが、60行目のFORは何のためにある感じですか? あとから数字を増やす予定かな? それなら問題ないんですが、0 TO 0ってとても気になったので〜0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[19]親投稿ごごちー gogochii2016/10/31 23:31増やす予定です!0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[20]親投稿でんぺん DENPEN2016/10/31 23:33そかそか、了解です〜。 頑張ってください! 0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[21]親投稿ごごちー gogochii2016/11/1 20:57度々すみません2つ質問です SPANIMでスプライトを移動させる時、移動中の座標を取得することはできますか? またSPANIMでxyを変更する際に、目標との距離が異なる複数のスプライトを同じ速度で動かすのに添付のやり方で合っていますか?0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[23]親投稿でんぺん DENPEN2016/11/1 21:23移動中の座標はSPOFSのOUT指定でとれると思いますよ。(たぶん) ただし取得するのはメインフレームの中で毎回取得するか、SPFUNCとかを使って呼び出す関数でとかになるとは思いますが…。 あと正確に目標地点が違うスプライトを速度的に同じで動かしたい場合は、目的地点までの距離を求めて、その距離に速度をかけたような値を時間として設定するようなプログラムになるんじゃないかなって思います。 1そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[24]親投稿ごごちー gogochii2016/11/1 21:40MAINLOOPにSPOFS OUT命令を入れるとout of rangeしちゃうんです.. 速さってことは 距離をSPANIMのフレーム数で割るってことでしょうか?0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[25]親投稿でんぺん DENPEN2016/11/1 21:50プログラムを部分的にしか見てないので全容はわかりませんが、どうも出現とメインループの切り分けがうまくいってないような気がしますね…。 早さを固定する場合は移動にかかる時間を計算しないといけないです。 例えばSX,SYがスタート地点でEX,EYが目的地だとすると、 L=SQR(POW(EX-SX,2) + POW(EY-SY,2)) でLに距離が求まります。この距離に対して速度をかけて、その値を-で設定する時間の方に当てはめる感じです。 0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[26]親投稿でんぺん DENPEN2016/11/1 22:03@SPMOVEの中でSPOFSやSPCHKをしているようですが、それだと出現した瞬間しか表示されないと思いますし、またもしこの@SPMOVEがメインループで毎回呼び出された場合は、毎回SPANIMをする事になるのでおかしな動作になってしまいます。 1そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[27]親投稿ごごちー gogochii2016/11/1 22:42これで一応問題なく動きました! スプライトは事前に25こ用意してそれをランダムで使い回していく感じです!0そうだね プレイ済み2017/11/03 01:48:00に取得
プチコン3号 SmileBASIC コミュニティ返信[28]親投稿ごごちー gogochii2016/11/1 22:45メインループとspofs0そうだね プレイ済み2017/11/03 01:48:00に取得