【スクラッチ】スプライトを使った無限ランダム横スクロールの方法

2021年2月16日火曜日

Scratch スクラッチ プログラミング

t f B! P L






 


スクラッチでランニングゲームを作った時に全画面のスプライトを使ってスクロールを行いました。


コスチュームにいくつかパターンを持たせて、表示させるときにランダムで選択することで無限に横スクロールが続くように作ってみました。


その時のメモです。



今回は2種類の方法を試しました。


方法1:クローンを作成→削除を繰り返す方法


方法2:3つのクローンを使いまわす方法



最初は方法1で作っていたのですが、別の原因でメモリリークが発生してしまい原因を探っている最中で方法2に切り替えました。


方法1でメモリリークが発生することはないので、こちらの方がシンプルで分かりやすいと思います。


方法2に変えた後、動作が特に変わらないのでそのまま完成させました。




全画面のスプライトを作成する


新規でスプライトを1つ作ります。

描く」で作って名前は「地面」にしました。

座標はX=0Y=0にしておくと分かりやすいです。



コスチュームの作成画面で最初のパターンを作ります。


とりあえず地面を描きます。





ここで、X座標を-600と入力してリターンしてみます。






これ以上左に行けません


スクラッチではスプライトを完全に画面外に出せないようなので、コスチュームを工夫する必要があります。





透明の四角を長めに配置します。

場所は真ん中じゃなくても構いません。



もう一度、X座標を-600と入力してリターンしてみます。






画面外へ消えました。


これから作る全てのスプライトにこの「見えないバー」が存在しています。






とりあえず4パターン作りました。







方法1.コードを組み立てる(クローン作成→削除版)



地面」スプライトのコードを開きます。


作成するのは次の3つの制御になります。



「はたが押されたとき」


「クローンされたとき」


「横スクロール」  ← これは自分で作成しました




それぞれのコード次のようになりました。



「はたが押されたとき」







「クローンされたとき」









「横スクロール」  ← これは自分で作成しました





表示パターンをあらかじめ「次の画面リスト」に登録しておけば、決まった順で出すこともできます。




↓のように動きます。





これだけのプロジェクトを公開してあります。


横スクロール(クローン作成→削除版)







方法2.コードを組み立てる(3つのクローンを使いまわす)


同じ素材を使ってクローンを使いまわす方法のコードを作りました。

注意する点は、オリジナルは使わないのですがメッセージを受け取ってしまうのでオリジナルクローンかを区別できるようにしておくことです。


オリジナルはメッセージを受け取っても何もしないようにしておきます。




作成するのは次の5つの制御になります。




「はたが押されたとき」


「クローンされたとき」


「横スクロール」  ← 自分で作成しました


「再利用して表示」  ← 自分で作成しました


「(再利用する)を受け取ったとき」




それぞれのコード次のようになりました。


「はたが押されたとき」






「クローンされたとき」






「横スクロール」  ← 自分で作成しました







「再利用して表示」  ← 自分で作成しました







「(再利用する)を受け取ったとき」






実行結果は方法1と同じです。



サンプルコードのプロジェクトを公開しています。






他にも色々方法があると思います。

横長の画像を作って、最大限まで拡大して表示してもいいかもしれません。



もっと良い方法が思いついたらどんどん改良していきたいと思います。^^

↓の記事は当たり判定で上手くいかなかったときのメモです。



他の作品記事もよければ読んでみてください。


このブログを検索

ブログをよくする

自己紹介

自分の写真
はじめまして。はるはるです。 中2の息子と小5の娘を抱える2児の父です。今はゲーム会社で働いています。 子供のプログラミング学習に協力できるように教え方を勉強中です。 このブログでは簡単なゲームを作りながら自分が学んだことを少しずつ共有していきます。 情報処理の試験をたまに受けます。 第二種情報処理技術者 ソフトウェア開発技術者 基本情報処理技術者 応用情報処理技術者 twitter: https://twitter.com/amaruchan007

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

QooQ