Scratch ライブラリ(疑似3Dスクロール)
G14 Great Fighter Jerrydog では疑似 3D スクロールを使ってダイナミックな動きを実現してみました。After Burner だし。また、先日 Time Trial On Edge という 3D レーシングも試しに作ってみました。ということで、ライブラリ化できたら似たようなもの量産できそう、という期待に胸を膨らませて、ライブラリ化です。
上記 2 作品はある意味試行錯誤だったのですが、その知見を踏まえ、かなりシンプルに仕上がってます。計算量も少なめにし、より使いやすくしました。
疑似3Dスクロール
プロジェクト
ここにあります。
Scratch 上だと英語の人が多いので、基本英語のプロジェクトにするようにしました。日本語での説明はこの Qiita の記事で。むしろこっちの方が情報量多いですし。
ライブラリ概要
以下、実現できます。Jerrydog でやってたことですね。しかもさらにシンプルな実装で。
- スムーズな疑似 3D スクロール
- 地面の回転
- 任意のオブジェクト配置
- 水平線位置(高さ)の動的な変更
- スクロールスピードも変更可能
使い方
基本
グローバルに定義してある変数をコントロールします。詳細は「変数・リスト」参照。
各種情報
変数・リスト
In: 他スプライト管理の値を参照/Out: 本スプライトで設定
変数名 | In/Out | 概要 |
---|---|---|
BG Horizon Angle |
In | 水平線の傾き |
BG Horizon Line |
In | 水平線の Y 座標(Angle = 0 時) |
BG Speed |
In | スクロール速度 |
イベント
特になし
コスチューム
オブジェクトをスクロールに乗せる場合、コスチュームとして用意し、Add Object ブロックを使う。詳細は以下のサンプルとコード参照。
オブジェクトはこんな感じで用意。オブジェクトの下端が中心に来るように。
Add Object ブロックは以下の定義となっている。goal x は最下段での X 座標で、どこに向かっていくかを指定する。
サンプルでのコードはこんな感じです。
技術的な仕組みは別途触れる予定なので、ここでは省略(近々予定)。