さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②

さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②
グリフパッチ(動画)
ok-scratch(執筆)

和訳解説は動画作者のグリフパッチさんご本人から許可をいただいて掲載しております。
チャンネルはYOUTUBE ( by griffpatch )からどうぞ。

プレイヤーからビームを出すことで壁との距離を測り、3D化に必要なデータを集める。そしたらもうサクッと3D化だ!
スターター
プロジェクト
リミックス用プロジェクトへ
難しさ

任意)自分の作業中のスクラッチ作品URLを記録しておこう!再開するときに便利だよ。

LOADING...

※ この記録は今使ってるPCに保存されます。別のPCで作業するときは表示されません。

スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。

ゴンザレスからゲームクリエイターへの挑戦(ちょうせん)(じょう)

2Dのマップを()(はい)れたけど、これじゃあゴンザレスがいる3D迷宮(めいきゅう)にはたどり()かない!悲嘆(ひたん)()れるピコにスクラッチキャットが()()した希望(きぼう)(ひか)り、それがペンツール!これをつかって2Dのマップを3D()できるとスクラッチキャットは豪語(ごうご)する。()たしてその手法(しゅほう)とは!?
さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②を語るok-scratch ok-scratch

u003cpu003eいよいよ、というか(だい)(かい)()にしてさっそく3D()だよ。(あたら)しい変数(へんすう)定義(ていぎ)()えるけど、(ぼく)がサポートするから一緒(いっしょ)(すす)めていこう!u003c/pu003e

今回(こんかい)目標(もくひょう)「3D()する!」

なんともう3D(ばか)しちゃうぞ。まずはオーソドックスなよくある3Dを(つく)る。これはスクラッチWIKIにも()っている基本的(きほんてき)なレイキャスティングという手法(しゅほう)になる。でもこれが爆速(ばくそく)3Dの下地(したじ)になるから大事(だいじ)今回(こんかい)完成(かんせい)目標(もくひょう)となる動画(どうが)確認(かくにん)しておこう。
うぉお!3Dっぽい(うご)きになってるよね!この(だい)(かい)チュートリアルでここまで実装(じっそう)(すす)()よ。(たの)しんでいこうぜ!

スプライト「レイキャスター」を(つく)

3Dといえばレイキャスティングという手法(しゅほう)と、レイトレーシングという手法(しゅほう)があるんだ。レイトレーシングというのはマイクラみたいな本格的(ほんかくてき)な3Dゲームで採用(さいよう)されている精緻(せいち)《せいち》だけどめっちゃ(おも)たい手法(しゅほう)。スクラッチではもう1つのレイキャスティングという手法(しゅほう)使(つか)っていくよ。比較的(ひかくてき)(かる)いけど、普通(ふつう)実装(じっそう)しただけではスクラッチで3Dゲームを(つく)るのは(きび)しいと(かん)じる(おも)さ。とりあえず(おも)たいけどスクラッチWikiにも()ってる一般的(いっぱんてき)なレイキャスティングを実装(じっそう)するよ。それをのちのち改善(かいぜん)して爆速(ばくそく)にしていくからお(たの)しみに。

スプライトを複製(ふくせい)しよう

じゃ、レイキャスティングするスプライトを(つく)るためにスプライト「プレイヤー」を複製(ふくせい)しよう。
「レイキャスター」と名付(なづ)けておこう。
コードはいったんすべて()しておこう。
コスチュームも、「プレイヤー」は不要(ふよう)だから()すよ。ヒットボックスだけ(のこ)しておいてね。

コーディングをしよう

(みどり)(はた)()されたらコスチュームを「ヒットボックス」にしておこう。
回転(かいてん)方法(ほうほう)を「回転(かいてん)しない」にしよう。

スペースキーが()されたら(かべ)()かって発射(はっしゃ)する

一時的(いちじてき)にスペースキーが()されたら、っていうタイミングでレイ((ひかり))がキャスト(発射(はっしゃ)照射(しょうしゃ))されるようにするよ。まぁレイっていうか最初(さいしょ)はヒットボックスが()んでいく(かん)じ。

プレイヤーの()きに()ける

この2つのブロックを()つけておいて。
「ステージの背景(はいけい)」っていうドロップボックスから「プレイヤー」「()き」っていう選択肢(せんたくし)(えら)ぼう。
これを()()わせて()くよ。
で、プレイヤーに()くようにする。

(うご)きをテストする

オッケー、スペース()したら四角(しかく)がプレイヤーに()ってるね。

(ひかり)(かべ)()かって発射(はっしゃ)する

ここからループを実装(じっそう)するよ。
条件(じょうけん)(しき)は「レベルに()れたら」にして、(かべ)()たるまで(すす)()ようにしていくよ。
歩数(ほすう)はとりあえず4()ずつ(うご)くようにしようか。

(かべ)()かうかテストする

よしよし、四角(しかく)いヒットボックスが(かべ)()かっていってるね。

ちなみに4()にした理由(りゆう)

さっき4()ずつ(うご)くようにしたけど、これはヒットボックスのコスチュームが4 x 4だからなんだ。

(かべ)にめり()んだら(もど)

(ちい)さいから()えにくいけど、ヒットボックスと(かべ)距離(きょり)によっては、ヒットボックスが(かべ)にめりこんでしまうんだ。
そこで、(かべ)から(はな)れるまで(うし)ろに()がるような実装(じっそう)(つく)るよ。ループを複製(ふくせい)しよう。
条件(じょうけん)(しき)反転(はんてん)して、マイナス1()(うご)かすようにしよう。

(かべ)でピタッと()まっているかテストする

ミリ単位(たんい)だから確認(かくにん)しづらいけど、(かべ)でピタッと()まるようになったよ。(かべ)にあたった瞬間(しゅんかん)に「ピクッ」って()がってる様子(ようす)()()れるかな?

u003cpu003e(かべ)()かって発射(はっしゃ)するビームの実装(じっそう)成功(せいこう)したu003c/pu003e

ブロック定義(ていぎ)「_シングル・レイ」を(つく)

この一連(いちれん)処理(しょり)をカスタムブロック定義(ていぎ)としてまとめていくよ。画面(がめん)(さい)描画(びょうが)せずに実行(じっこう)すればピクってなる(うご)きも抑制(よくせい)できるはずだし、(かべ)までの移動(いどう)一瞬(いっしゅん)になるはずだ。名前(なまえ)は「_シングル・レイ」にしよう!ちょっとかっこいいw
さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②を語るok-scratch ok-scratch

u003cpu003eちなみに名前(なまえ)最初(さいしょ)にアンダーバーが()いているのは、「(さい)描画(びょうが)せずに実行(じっこう)する」ブロック定義(ていぎ)のマークとして使(つか)ってるんだ。こうしておくとパッと()で「(さい)描画(びょうが)ありかなしか」が()かりやすい。u003c/pu003e

ブロックを(うつ)

(いま)(つく)った一連(いちれん)(なが)れをまるっと移動(いどう)しよう。

BEFORE

AFTER

そして移動(いどう)(もと)にはブロック定義(ていぎ)()いておこう。

一瞬(いっしゅん)(かべ)到達(とうたつ)するようになったかテストする

ふっふー♪一瞬(いっしゅん)移動(いどう)するようになったぜい!

u003cpu003e(かべ)までビームが一瞬(いっしゅん)(とど)くようになったu003c/pu003e

ビーム発射(はっしゃ)ぁ!

ヒットボックスが(かべ)()ぶだけじゃあ味気(あじけ)ない(?)から、ペンを使(つか)ってビームを発射(はっしゃ)するようにするよ。画面(がめん)左下(ひだりした)からペンを追加(ついか)しよう。
ペンっていうのをクリックする。
これでペンの追加(ついか)はOK。

ペンの初期(しょき)設定(せってい)をする

(あたら)しいブロックがブロックパレットに追加(ついか)されたと(おも)うから、その(なか)から「全部(ぜんぶ)()す」ブロックを(えら)んで、スペースキーが()されたときに追加(ついか)しよう。
そしてペンの(ふと)さを、ヒットボックスのサイズである4に設定(せってい)しよう。
(いろ)適当(てきとう)でいいよ。ここでは水色(みずいろ)(53)にしとく。

ペンで(えが)

(つぎ)定義(ていぎ)「_シングル・レイ」にブロックを追加(ついか)していこう。まず「ペンを()ろす」だ。
定義(ていぎ)最後(さいご)には「ペンを()げる」を追加(ついか)だ。

ビームがでるようになったかテストする

よぉし、ビーム発射(はっしゃ)完成(かんせい)

プレイヤーから(つね)発射(はっしゃ)されるようにする

いまはスペースキーを()したらビームがでるけど、これを(つね)発射(はっしゃ)されるようにする。ビーム()(なが)しw

メッセージ「レイキャストする」を(つく)

(いま)まで使(つか)ってた「スペースキーが()されたとき」を、(いま)(つく)った「レイキャストするを()()ったとき」に()()えよう
こうなる↓

プレイヤーからメッセージを(おく)

スプライト「プレイヤー」を(ひら)こう。
(みどり)(はた)()されたとき、で使(つか)ってる「ずっとループ」の最後(さいご)でメッセージ「レイキャストする」を(おく)ろう。
さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②を語るok-scratch ok-scratch

u003cpu003e↑このスクショが、この(さき)のチュートリアルのものを使(つか)ってしまったため「移動(いどう)する」っていう定義(ていぎ)があるけど、()にせず(すす)めてください。今後(こんご)のチュートリアルで一緒(いっしょ)実装(じっそう)していきます。ご指摘(してき)をくれたunagiRocketさん、ありがとうございますm(_ _)mu003c/pu003e

ビームが(つね)発射(はっしゃ)されるかテストする

おおぉ、ビームがずっと発射(はっしゃ)されるようになったからプレイヤーの(うご)きにピッタリ()ってるね。最高(さいこう)

u003cpu003eプレイヤから(つね)にビームがでるようになった!これを視線(しせん)として使(つか)っていく。u003c/pu003e

扇状(せんじょう)にビームを発射(はっしゃ)する

このシングル・レイは一(ほん)(せん)というか一条(ひとすじ)(ひかり)だよね。最終的(さいしゅうてき)にはこのビームを扇状(せんじょう)になるようにたくさん()したいから、その処理(しょり)(つく)ったあとに、処理(しょり)をまとめる定義(ていぎ)(つく)るよ。まずは扇状(せんじょう)になるようにカスタマイズしていこう。

シングル・レイをたくさん発射(はっしゃ)する

ではスプライト「レイキャスター」を(ひら)こう
10(かい)()(かえ)すループで定義(ていぎ)「_シングル・レイ」を(かこ)()
(つぎ)に5()(みぎ)(まわ)そう。
これでOK!

(しん)定義(ていぎ)「_レイキャストする」を(つく)ろう

スクショだとアンダーバーが()けてるけど、(しん)定義(ていぎ)「_レイキャストする」を(さい)描画(びょうが)せずに実行(じっこう)するように(つく)ろう。
(いま)(つく)った10(かい)()(かえ)すループをまるっと(うつ)すよ。

BEFORE

AFTER

移動(いどう)(もと)にはこの定義(ていぎ)実行(じっこう)するブロックを()こう。

扇状(せんじょう)のビームをテストする

奥義(おうぎ)(おうぎ)ビーム!」なんちゃって😅

ビームが(ひろ)がる範囲(はんい)管理(かんり)できるようにする

(いま)角度(かくど)管理(かんり)しづらいけど、ゲームによっては視野(しや)(ひろ)かったり(せま)かったりできると(たの)しい機能(きのう)実装(じっそう)できそうだよね。そこで、ビームが(ひろ)がる範囲(はんい)角度(かくど)管理(かんり)できるようにするよ。

変数(へんすう)「★視野(しや)(かく)」を(つく)

スクショだと★がついてないけど、すべてのスプライト(よう)変数(へんすう)には名前(なまえ)(まえ)に★をつけておくと()かりやすいからオススメだよ。
さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②を語るok-scratch ok-scratch

u003cpu003eグリフパッチさんをはじめとして(おお)くの海外(かいがい)スクラッチャーは、すべてのスプライト(よう)変数(へんすう)大文字(おおもじ)()いて、このスプライトのみの変数(へんすう)小文字(こもじ)()く、といった工夫(くふう)をしているよ。でも日本語(にほんご)だと大文字(おおもじ)とかないから(ぼく)は★で見分(みわ)けられるようにしてる。u003c/pu003e

初期(しょき)()は60にしておこう。
変数(へんすう)のデバッグ表示(ひょうじ)(みぎ)クリックして、スライダーで管理(かんり)できるようにしよう。
もう一度(いちど)(みぎ)クリックして「スライダーの指定(してい)範囲(はんい)変更(へんこう)」を(えら)ぼう。
30から120に設定(せってい)しておくとちょうどいいよ。

定義(ていぎ)「レイキャストする」で視野(しや)(かく)使(つか)

ループの条件(じょうけん)(しき)にこの視野(しや)(かく)()使(つか)おう!
そして(みぎ)(まわ)角度(かくど)を1()にしたら(ただ)しく視野(しや)(かく)実現(じつげん)できるぞ!

視野(しや)(かく)範囲(はんい)にビームが(ひろ)がるかテストする

やっほぃ!視野(しや)(かく)のスライダーを()えるとビームの範囲(はんい)()わったね!これで成功(せいこう)だ。あーでも、ちょっとずれてるの()かる?プレイヤーの右側(みぎがわ)にビームが(かたむ)いてしまっているよね。これは(なお)しておこうか。

ビームの(かたむ)きを(なお)

視野(しや)(かく)を2で()った()用意(ようい)するだけで実現(じつげん)できるよ。
これを「(みぎ)に◯()(まわ)す」ブロックにはめて、定義(ていぎ)「_レイキャストする」の最初(さいしょ)()こう。

ビームの(かたむ)きが(なお)ったかテストする

おけーぃ!ちゃんとプレイヤーを中心(ちゅうしん)にしてビームが(ひろ)がっているね!よっしゃ。

u003cpu003eプレイヤーから()るビームが扇状(せんじょう)になった。ちょうど視線(しせん)()(まえ)(ひろ)がっていく(かん)じ。u003c/pu003e

3D()するぞ(だい)作戦(さくせん)

3D()する作戦(さくせん)(つた)えるぞ!(した)()()てほしい。
(ぼく)らはいまビームを()ばすことに成功(せいこう)している。ビームは扇状(せんじょう)(ひろ)がっているので、(おうぎ)左端(さたん)はX座標(ざひょう)が-240の地点(ちてん)右端(みぎはし)はX座標(ざひょう)が240の地点(ちてん)()めてしまう。大切(たいせつ)なのは、(かく)X座標(ざひょう)のビームの距離(きょり)なんだ。描画(びょうが)自体(じたい)はX座標(ざひょう)がマイナス240からプラス240の地点(ちてん)までジックリ(えが)いていくんだけど、そのときにいったいどのくらいの「(たか)さ」の(かべ)(えが)けばいいのか、それを(おし)えてくれるのが距離(きょり)なんだ。
さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②を語るok-scratch ok-scratch

u003cpu003eピンとこなくても大丈夫(だいじょうぶ)!いますぐ理解(りかい)する必要(ひつよう)はないよ。実装(じっそう)したら理解(りかい)できた、なんてこともよくあるからね!u003c/pu003eu003cpu003eu003c/pu003e

変数(へんすう)「x座標(ざひょう)」をつくる

ではビームの位置(いち)保持(ほじ)するためにx座標(ざひょう)っていう変数(へんすう)(つく)ろう。もともと(あお)いブロックである名前(なまえ)(おな)じだから混乱(こんらん)しないようにね。
定義(ていぎ)「_レイキャストする」の最初(さいしょ)でマイナス240で初期(しょき)()しよう。一番左(いちばんひだり)(はし)だね。
そしてループの最後(さいご)にも()いてね。()のところは(つぎ)演算(えんざん)をいれるよ。
演算(えんざん)は、「480 / 視野(しや)(かく)」だよ。
さっそく3D迷宮に突入だ!爆速オンライン3Dゲームの作り方②を語るok-scratch ok-scratch

u003cpu003e480はX座標(ざひょう)(はし)から(はし)(-240から240まで)だね。視野(しや)(かく)は60だから、実質(じっしつ)「480 / 60 = 8」だね。8かぁ。それだといまヒットボックスのサイズが4っていうのに()わせて(よこ)に4ずつ(えが)いてるからスキマがあいちゃいそうだけど、まぁ最初(さいしょ)適当(てきとう)でもいいよね。これでいってみよう!u003c/pu003e

変数(へんすう)距離(きょり)」を(つく)

大事(だいじ)大事(だいじ)()ってた距離(きょり)だ。

ペンをいったん(はず)

定義(ていぎ)「_シングル・レイ」にあるペンのブロックを2つともはずそう。
そしてあまり使(つか)わないけど、この↓ブロックを(さが)してみて。選択肢(せんたくし)から「プレイヤー」を(えら)ぶよ。
これをはめて距離(きょり)()にしよう。距離(きょり)のブロック自体(じたい)定義(ていぎ)最後(さいご)()くよ。複雑(ふくざつ)演算(えんざん)必要(ひつよう)ないからシンプルだね!ふぅ!

変数(へんすう)(たか)さ」を(つく)ろう

X座標(ざひょう)ごとの距離(きょり)()れたから、今度(こんど)距離(きょり)によってどの(たか)さからペンを()ろすのかを()めていくよ!もう(すこ)しだ!
距離(きょり)のあとに「4000 / 距離(きょり)」って演算(えんざん)()れて設置(せっち)しよう。4000っていうのは……(いま)適当(てきとう)数字(すうじ)使(つか)ってるだけなんだw(こま)かいところを()めるのは後回(あとまわ)大作(たいさく)(せん)だ(なんそれ)
その(した)でX座標(ざひょう)とY座標(ざひょう)をそれぞれ変更(へんこう)しよう。
これでペンを()ろす初期(しょき)位置(いち)()いた。さっそくペンを()ろそう!
ここから(うご)いた(ぶん)だけ描画(びょうが)されるぞ。どこまで(うご)くかは、とりあえず単純(たんじゅん)(たか)さをマイナス()反転(はんてん)させた(ぶん)だけ(えが)こう!
これでペンを()げればOKだ!
テストの(まえ)にマップを()えないようにしておこう。スプライト「レベル」を(えら)んで。
幽霊(ゆうれい)効果(こうか)を100にしておこうか。

3D(ばか)されたかテストする

ドドドドドッどやぁ!3Dだぁぁぁ!

\u003cp\u003e2Dマップを3D()することに成功(せいこう)した!\u003c/p\u003e

まぁまだプレイヤーが()えてたりするんだけどwでもできたね。そして予想通(よそうどお)りスキマが()いてるね~。まぁこのあたりは(なお)していきましょう。それに、これってまだ爆速(ばくそく)3Dではなくて、よくある普通(ふつう)のレイキャスティングだから、まだまだ満足(まんぞく)はしないでくれよ?もちろんもっと(たか)みを目指(めざ)していくから、一緒(いっしょ)頑張(がんば)ろう!まぁきっとピコは(よろこ)んでることでしょう……って、あれ?なんか(こま)ったことが()きてるみたいだぞ。次回(じかい)もチェックしてみてね。このチュートリアルは世界(せかい)No.1スクラッチャーとして名高(なだか)いグリフパッチさんの動画(どうが)参考(さんこう)にしているよ。ただし手順(てじゅん)一部(いちぶ)()えているところもあるんだ。
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチプログラミングのゲーム攻略

スクラッチプログラミングのゲーム

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品