投稿
けい kei0baisoku
久しぶりの投稿。 でも、ゲームの話題ではありません。期待した人ごめんなさい(^^; 来週のプチコン更新で「スプライトとBGのコールバック」って機能が実装されますが、自分が前に作ったゲームで偶然同じような仕組みを作って活用してたので、「それって何が便利なの?」というのを簡単に解説してみようと思います。 この画面での、上へ登る黄色い+3のスコアに使ってます。
18そうだね
プレイ済み
返信[1]
親投稿
けい kei0baisoku
あ、ただスマイルブームさんの更新の告知を見て「同じだ!」って私が思っただけなので、フタを開けたら、私がやってることとそこそこ違ってる可能性もあります。 だいぶ違ってたらスミマセン(^^;
0そうだね
プレイ済み
返信[2]
親投稿
けい kei0baisoku
プログラムはココです。 "SPCALL_SET"がこのコールバック機能用の自作命令です。
1そうだね
プレイ済み
返信[3]
親投稿
けい kei0baisoku
先に、ゲームでやろうとしてる事の説明です。 このゲームでは食べ物を取ると、アップしたスコアの数をスプライトで表示させつつ、何かしら色を付けて、何かしらの動きをさせます。 写真ですと「+3」という黄色い数字が上へ登ります。登りきったら消えます。 で、この写真では一つだけですが、同時にいくつも出して動かしたいかもしれませんし、色も黄色だけじゃなくて複数種類作って、動きも減った時は逆に落ちるような動きにしたいです。 ってなことをやろうとしたら、フラグとか配列で管理してメインループで処理したら作れないことは無いですが、面倒ですよね。 このスプライトに対して「ちょっと今から、黄色で60fかけて上へ登ってよ!」って指示を出して後はやってくれたら便利です。 それができるようになるのが、「スプライトにコールバック関数を付ける」機能です。
0そうだね
プレイ済み
返信[4]
親投稿
けい kei0baisoku
プログラムで最初の引数の「BEG」が、指示を出したいスプライトの番号です。 二つ目の文字列の引数が、スプライトに仕事をさせるための関数名です。 自分で作ったDEF命令です。(すぐ下にあります) 残りの引数は、スプライトを出す座標や色です。 仕組みは省略しますが、こうやることで自動的に毎フレーム「UPSCORE_SPUPDATE」関数が、BEGのスプライトに対して呼ばれるようになります。 呼ぶ時に、XとYとCOLの引数も一緒に渡されます。 先に「UPSCORE_SPUPDATE」関数を、「指定された所に指定された色で自分を表示して、60fかけて少しずつ登っていく」ように作っておけば、SPCALL_SETにポイッと渡しただけで、後は勝手に上手いことやってくれるわけです。
0そうだね
プレイ済み
返信[5]
親投稿
けい kei0baisoku
仕事を始めて欲しいタイミングで指示を投げるだけなので、複数のスプライトに別々の仕事を並行して指示もできますし、1つのスプライトに複数の仕事を同時に指示も出来ます。 みたいな感じで、スプライトにさせたい「仕事の内容」と「指示を出すこと」を切り離して、楽に作れるようになります。 工夫すると、今まで大変だったあんな処理とかが作りやすくなるかもしれませんね(´ω`)
0そうだね
プレイ済み
返信[6]
親投稿
たまご tamagopu
昨日まさにプチコンのサイト見てコールバックルーチンをググってもよくわからず「アップデートしてから考えよう\(^o^)/」の投げてたところです←こら かゆいところに手が届く説明をありがとうです、けいさん。 調べたときはコールバック関数?の利点がいまいちピンとこなかったのだけれど、使いこなせたらすごそう…! スプライト同時に動かす方法が今までよくわからなかったから はやくつかってみたくなりました(*´∀`)
2そうだね
プレイ済み
返信[7]
親投稿
けい kei0baisoku
>たまごさん ありがとうございます! しかし公式の情報を見るほど自分がやった事と違ってるんじゃという気もしてきてます(ヲイ リリースされて、もし余力があれば補足の解説を追加投稿する所存(`・ω・´)
1そうだね
プレイ済み