雪の砂時計を作ってみました。
スプライトの数をコントロールできるように砂を「雪」にして溶かして消えることで継続してスプライトを出し続けられるようにしています。
プログラミングのポイント
背景
背景は「Woods」という元々スクラッチに入っている絵を使いました。
何でもいいのですが、「白(0,0,0)」に対して「雪」が当たり判定をしているので砂時計を置くところに白が無いものを選びました。
あと、雪が見やすいように夜の背景がぴったりでした。
「背景」のコードは↓ これだけです。
グローバル変数を初期化するだけですが1つしか作りませんでした。
水
「砂(=雪)」のスプライトを砂時計の中にたくさんクローンさせようかと思っていましたが、予想以上に処理落ちをしてしまい見栄えをよく(雪がたくさん振っているように)するため「雪」出現の回転をあげるため水に触れたらすぐに消えるようにしました。
砂時計の中の雪は、すぐに消えると山にならないのでしばらく時間が経ってから気温で溶けている風に消しています。
表示端末によっては凄く処理落ちしているかも・・・^^;
「水」にコードはありません。
障害物(=砂時計の入れ物)
「砂(=雪)」が「(障害物)に触れた」ブロックをつかって当たり判定に使っています。
「砂(=雪)」は「当たり判定用」のコスチュームと「見た目用」のコスチュームがあるので、「当たり判定用」でスムーズに流れるようにしています。
あと、垂直(下に向かって真っすぐ)の部分を作ってしまうと落下する砂が常にぶつかってゆっくり落下してしまったので、全体的に曲線になるようにしています。
(砂がたまらないように気を付けました)
「障害物」は最初コードが無かったのですが、多少変化がないと寂しい感じがしたので色をグラデーションさせつつフェードを繰り返すようにしました。
完全に透明になっても当たり判定は有効なので、「障害物」の形をなぞります。
「障害物」のコードです。
あまり深く考えずに適当に数値を入力しました。
sinを使うと一定範囲を繰り返す数値を簡単につくれます。
砂(=雪)
「砂(=雪)」は、「障害物」と「水」に加えて雪自身である「白い色」との判定を入れています。
そうしないと砂の山を作れないのです。。。
砂は基本的に真下に進みますが、進めない場合は次の方法で行先を探索します。
探索1
「8歩進んでぶつからなかったらその向きにする」
探索2
「8歩進んでぶつからなかったらその向きにする」
進む方向が見つかったら探索を終わります。
「砂(=雪)」のコードは少し多いのでプロジェクトを直接見てください。
「障害物」のコスチュームでいろいろな形に変えてオリジナルの砂時計を作ることができるのでよかったら試してみてください。
追記:
判定するときにずらす角度を1度から10度に変えました。
8歩だと28方向ぐらいにしか移動できないので不要な判定をざっくりと除外した形になります。これですこし多く雪を出すことができるようになったので、最初の初期化処理で雪を200個同時に出現させています。
また、雪が消える時間もある程度ランダムになるように変更しました。
ちょっとだけよくなったかな?^^
この記事を最後まで読んで頂きありがとうございました。
「水色のパンダ団」が作ったスクラッチ作品の記事まとめ
スクラッチ作品の作り方や解説をした記事を整理しました。小学生などの初心者やゲームを作りたい中級、上級者などプログラミングのスキル別に作品をまとめています。
0 件のコメント:
コメントを投稿