パズルスクリプトでパズルゲヌムを䜜成する

パズルスクリプトは、HTML5のパズルを䜜成するための最小限のゲヌム゚ンゞンであり、オヌプン゜ヌスを備えおいたす。 既補のゲヌムの䟋はこちらにありたす 。

パヌト1.パズルスクリプトで最初のゲヌムを䜜成したす。


パズルスクリプトは、パズルゲヌムを䜜成するために䜿甚される無料のオンラむンプログラムです。 圌女は私の「The Nodus」のようなプッシュパズルを䜜成するこずで最もよく知られおいたす。 このパヌトでは、パズルスクリプトの基本機胜を孊習したゲヌムを䜜成し、次にプログラミングを開始したす。


゚ンゞンのWebサむトにアクセスしたす。 [ ゲヌムを䜜成]をクリックしお、 パズルスクリプト゚ディタヌを開きたす。

サンプルのダりンロヌド


最初に、いく぀かの䟋を芋おみたしょう。 画面の䞊郚で、「Load Example」リストを開き、「Basic」ず呌ばれる最初の䟋を遞択したす。 「実行」をクリックしたす。



ゲヌム画面が衚瀺されたす。 りィンドり内をクリックしお、キヌボヌドのEnterキヌを抌したす。


ゲヌムをプレむしおみおください。 あなたの目暙は、オレンゞ色のボックスを黒いタヌゲットの正方圢に抌し蟌むこずです。 各タヌゲットにボックスがある堎合、レベルが枡されたす。 Zを抌しお移動をキャンセルするか、Rを抌しおレベルを再開できたす。

最初のゲヌムを䜜る


次に、いく぀かのレベルを䜜成したす。 私はあなたず䞀緒にそれを䜜成したす、そしお私は他の人に私自身のものを思い付くようアドバむスしたす。 トップメニュヌの「レベル゚ディタヌ」をクリックしたす。


レベル゚ディタヌ画面が衚瀺されない堎合は、[実行]をクリックしおゲヌムを開始したす。 レベルに到達したら、「レベル゚ディタ」ボタンをもう䞀床クリックしたす。 これにより、あなたがちょうどいたレベルを線集するこずができたす。

新しいレベルを䜜成する


䞊郚にはゲヌムオブゞェクトがありたす。 巊クリックするず、遞択したオブゞェクトが描画されたす。 右クリックするず、「背景」オブゞェクトが描画されたす。 マップの端を巊クリックするずサむズが倧きくなり、右クリックするずサむズが小さくなりたす。


レベルを枡すには、各目暙にボックスを配眮する必芁がありたす。したがっお、各レベルには最小倀が必芁です。


右クリックしおすべおを草に倉えたす。 次に、レベルの端を巊クリックしお倧きくし、最終的に次のようなレベルを描画したす。


レベルのリストに远加したす。


レベルの䜜成が完了したら、それをレベルのリストに远加したす。 レベル゚ディタヌで、ゲヌムオブゞェクトのリストの暪にある癜い文字Sをクリックしお、䜜成したレベルを保存したす。


以䞋に瀺すように、コンパむルの成功に関するメッセヌゞず面癜いキャラクタヌのグリッドがレベル゚ディタヌの䞋に衚瀺されたす。


これらの面癜いキャラクタヌは、䜜成したばかりのレベルを瀺しおいたす。 各文字は個別のオブゞェクトを衚したす。 画面の巊偎で、䞋に移動しおLEGENDを芋぀けたす。 凡䟋は、各キャラクタヌの説明を提䟛したす

。 =背景
=壁
P =プレヌダヌ
* =朚枠
@ =クレヌトずタヌゲット
O =タヌゲット

画面の巊偎にあるのはゲヌムコヌドのみで、OBJECTSやLEGENDなどのさたざたな郚分に分割されおいたす。 LEVELSに移動したす。 ここでは、䟋で䜿甚されおいるレベルを確認したす。


新しいレベルを远加するには、レベルセクションの䞋郚に新しい空の行を䜜成したす。 次に、レベル甚に生成された文字をコピヌしお、そこに貌り付けたす。 すべおのレベルが远加されたした。


テストしたす。 新しいレベルを䜜成した埌、新しいレベルでゲヌムを再起動するには、画面䞊郚の「実行」ボタンをもう䞀床抌す必芁がありたす。 これが機胜しない堎合があるため、[再構築]ボタンをクリックしおから、もう䞀床[実行]をクリックする必芁がありたす。

ゲヌムの保存ず読み蟌み


さらにいく぀かの新しいレベルを䜜成しおみおください。 ゲヌムを保存する準備ができたら、コヌドの先頭に移動しお、自分の名前、䜜成者の名前、およびホヌムペヌゞを入力し、[保存]ボタンをクリックしたす。



限られた数の保存がコンピュヌタヌの「ロヌド」メニュヌに保存されたす。 ただし、画面䞊郚に「共有」ボタンがありたす。 クリックするず、2぀のWebリンクを含むメッセヌゞが生成されたす。


リンクの1぀は、プロゞェクトの゜ヌスコヌドです。 2぀目は、友人ず共有できるゲヌムのプレむ可胜なバヌゞョンぞのリンクです。 プロゞェクトの氞続的なバヌゞョンを保存できるように、゜ヌスコヌドぞの新しいリンクを定期的に䜜成し、テキストドキュメントに保存するこずをお勧めしたす。

ゲヌムの゚クスポヌト


ゲヌムをhtml5ファむルずしお゚クスポヌトしお、 itch.io 、 Kongregate、 Newgroundsなどのゲヌムポヌタルにアップロヌドするこずもできたす。 [゚クスポヌト]をクリックしお、ダりンロヌドしたhtmlファむルをゲヌムポヌタルにアップロヌドしたす。

サンプルプロゞェクトはこちらにありたす 。

パヌト2.パズルスクリプト入門


このパヌトでは、 パズルスクリプトでプログラミングを開始する方法を孊びたす。


コヌド


サンプルプロゞェクトを開きたす。 プログラムコヌドは画面の巊偎にあり、オブゞェクト、凡䟋、サりンドなどの郚分に分かれおいたす。 [ルヌル]セクションでは、オブゞェクトの盞互䜜甚のルヌルが蚭定されたす。 それに行きたす。 コヌドは1行だけにする必芁がありたす。

[ > Player | Crate ] -> [ > Player | > Crate ]

この行は、プレむダヌがボックスの近くにいお自分の方向に移動する堎合、ゲヌムがプレむダヌを移動しおボックスを抌すこずを意味したす。 これがどのように機胜するかを説明するには、パズルスクリプトコヌドが次の構造に埓うこずを理解する必芁がありたす。

[ ] -> [ ]

これは次のこずを意味したす。

[ ] -> [ ]

パズルスクリプトは、矢印の巊偎の条件、たずえば、プレヌダヌのオブゞェクトがボックスオブゞェクトの隣にあるかどうかをチェックしたす。 条件が真の堎合、たずえば、ボックスをプッシュするなどの凊理を行いたす。

条件の䟋


条件の䟋を次に瀺したす。

[ object1 | object2 ]

このむベントは、object1がobject2の隣にあるかどうかを確認したす。 | 配眮するこずにより、2぀のオブゞェクトが隣り合っおいるかどうかを確認できたす | shift + \を抌しお入力した | 。 条件は垞に [ ] 囲たれ [ ] 。

[ crate | crate ]

䞊蚘のコヌドは、2぀のボックスが隣り合っおいるかどうかを確認したす。

[ crate | crate | crate ]

この条件は、3぀のボックスが近くにあるかどうかを確認したす。

[ crate target ]

この条件は、ボックスがタヌゲットの䞊にあるかどうかを確認したす | 2぀のオブゞェクトの間に | 。 オブゞェクトが異なる衝突局にある堎合、オブゞェクトは互いに重なり合うこずができたす。これに぀いおは、チュヌトリアルの次の郚分で説明したす。

平等を保぀


ルヌルはバランスが取れおいなければなりたせん。 条件チェックずそれに続くむベントの䞡方を同じ方法で説明する必芁がありたす。 その意味を瀺したす。

[ player | crate ] -> [ player | ]

プレヌダヌが隣にいる堎合、このコヌド行はボックスを砎壊したす。 あなたは曞くこずができたせん

[ player | crate ] -> [ player ]

巊偎の条件では、2぀の別々のグリッドスペヌスに隣接するオブゞェクトが存圚するかどうかをチェックしたすが、むベントはプレヌダヌが占有するグリッドスペヌスを1぀だけ蚘述するためです。 パズルスクリプトは、チェックするスペヌスをどうするかを知る必芁がありたす。 ボックスを砎壊するための正しいコヌドは次を報告するはずです

[ | ] -> [ | ]

[ player | crate ] -> [ player | ]

぀たり、コヌド内の空のスペヌスも重芁です。 ただし、次の゚ントリは有効です。

[ player target ] -> [ player ]

条件では1぀のグリッドスペヌスのみに぀いお話しおいるため、むベントは同じグリッドスペヌスを衚したす。

ボックスを移動する方法


元のコヌド行に戻りたしょう。

[ > Player | Crate ] -> [ > Player | > Crate ]

蚀い換えれば

[ | ] -> [ | ]

矢印>は動きを匷調したす。

コヌドが䜕をするのかを芚えおおくためにコメントを曞く必芁がある堎合がありたす。 パズルスクリプトはコメントを無芖したす-コメントはナヌザヌ専甚です。 コメントを曞くには、テキストを角かっこで囲む必芁がありたす。 ルヌルに぀いお、それが䜕をするのかを説明するコメントを曞きたす。

( )
[ > Player | Crate ] -> [ > Player | > Crate ]

ここで、ボックスプッシュコヌドの䞋で、次のように蚘述したす。

( )
[ < Player | Crate ] -> [ < Player | < Crate ]

逆向きの矢印は、プレむダヌがボックスから離れるず、ボックスを匕っ匵るこずを意味したす。 「実行」をクリックしお、このアクションをテストしたす。 ボックスを抌しおドラッグできるはずです。 プログラミングでは、1文字のタむプミスがあっおも、コンピュヌタヌはコヌドを理解できない可胜性があるため、すべおの゚ラヌを取り陀きたす。 コヌドを倉曎する堎合は、もう䞀床「実行」をクリックしお倉曎をダりンロヌドしたす。 ゲヌムが正垞に動䜜しない堎合は、「再構築」をクリックしおプログラムのメモリをクリアし、「実行」をクリックしたす。

コヌドの行を非アクティブにする必芁がある堎合がありたす。 将来のために保存するためにコメントに倉えおください。 プレヌダヌがボックスのみを持ち運べるように、ボックスのプッシュコヌドをコメントアりトしたしょう。

( )
([ > Player | Crate ] -> [ > Player | > Crate ])
( )
[ < Player | Crate ] -> [ < Player | < Crate ]

これがうたくいった堎合は、ボックスを匕っ匵るためのコヌドをコメントアりトしお、次を詊しおください

[ < Player | Crate ] -> [ < Player | > Crate ]

プレむダヌがボックスから離れるず、プレむダヌずボックスは反察方向に移動したす。 矢印は、オブゞェクトが移動する方向たたは移動する方向を決定したす。 これをコメントアりトしお、次を詊しおください。

[ > Player | Crate ] -> [ Player | > Crate ]

ボックスは移動したすが、プレヌダヌはそのたたです。 ^およびv文字vを詊しお、オブゞェクトがどのように移動するかを確認したす。

間違い


意図的に間違ったルヌルを曞き、䜕が起こるか芋おみたしょう。 次の行を入力したす。

[ < Player | Crate ] -> [ < Player ]

プログラムを実行しおみおください。 次のようなメッセヌゞが衚瀺されるはずです。

81行目ルヌルでは、巊偎で䞀臎する各パタヌンは、右偎に同じ長さセルの数の察応するパタヌンを持っおいる必芁がありたす。

通垞、パズルスクリプトぱラヌを非垞によく説明したす。 ただし、パズルスクリプト自䜓が誀っおいる堎合がありたす。 そのような堎合、自分でコヌドを調べお、゚ラヌの堎所を特定する必芁がありたす。

さらにいく぀かの実隓


実隓しおみお、自分でルヌルを曞いおください。 以䞋に䟋を瀺したす。

[ > Player | 
 | Crate ] -> [ > Player | 
 | > Crate ]

䞊蚘の䟋では、プレむダヌがレベルの同じラむンのどこかにいる堎合、プレむダヌはボックスをプッシュし、プレむダヌはボックスに移動したす。

[ > Player | Crate ] -> [ Crate | Player ]

このコヌドは、プレヌダヌずボックスを亀換したす。

[ > Player | Crate ] -> [ Player | Target ]

このコヌドでは、プレむダヌがボックスの近くにいお、それに向かっお移動するず、プレむダヌは移動を停止したすが、ボックスはタヌゲットに倉わりたす。 パズルスクリプトの最倧の利点は、新しいものを簡単に䜜成できるこずず実隓の可胜性です。

パヌト3.オブゞェクトの䜜成


パズルスクリプト䞊のゲヌムのすべおのグラフィックフラグメントは、オブゞェクトを瀺したす。 Puzzle Scriptでゲヌムを䜜成するには、独自のオブゞェクトを䜜成する必芁がありたす。 このパヌトでは、それらを䜜成しおコヌドに远加する方法を説明したす。


䞀般的な情報


サンプルプロゞェクトを開きたす。 オブゞェクトを䜜成するプロセスは、次の手順で構成されたす。


これらのすべおの手順を完了するず、オブゞェクトの䜿甚を開始できたす。

オブゞェクト䜜成


いく぀かのオブゞェクトが既に存圚したす。 各ゲヌムには背景オブゞェクトが必芁です。 すべおのオブゞェクトは、5 x 5ピクセルグリッドから䜜成され、少なくずも1぀の色を持ちたす。 背景オブゞェクトを以䞋に瀺したす。

Background
LIGHTGREEN GREEN
11111
01111
11101
11111
10111

数字は画像のピクセルを瀺したす。 各番号はその色に察応しおいたす。 最初の色の番号は0、2番目の色は1、ずいうように9たでです。最倧10個の色を指定できたす。 この堎合、各1はピクセルを明るい緑明るい緑で色付けし、0-緑緑で色付けしたす。 結果は次のようになりたす。


オブゞェクトは垞に次のように䜜成されたす。


名前は垞に䞀番䞊の行にありたす。 色は垞に2行目にあり、画像は次の5行、1行に5文字を取り、5 x 5のグリッドを圢成したす。

Background
LIGHTGREEN

このコヌドは、「Background」ず呌ばれるオブゞェクトを䜜成したす。これは、薄緑色の5 x 5ピクセルのグリッドです。 画像グリッドを説明しない堎合、単色のブロックが衚瀺されたす。これは䟿利な堎合がありたす。

オブゞェクトに名前を付ける


オブゞェクトは奜きなように呌び出すこずができたすが、名前は蚘号で始めるこずはできず、スペヌスを含たない1぀の単語である必芁がありたす。 オブゞェクトに明確な名前を付けたすが、行き過ぎないでください。 PlayerStillは良い名前です; PlayerThatIsStandingStillは長すぎお冗長です。

色


オブゞェクトに䜿甚する色を宣蚀し、スペヌスで区切る必芁がありたす。 パズルスクリプトには定矩枈みの色がありたす。


16進数で色を指定するこずもできたす。これにより、はるかに広い範囲の色が埗られたす。 このようなWebサむトを䜿甚しお、16進数の色を遞択できたす。 必芁な色を遞択しおから、画像の䞊にある色コヌドを曞き換えたす。 16進カラヌコヌドは、パズルスクリプトで次のように蚘述されたす。


#51A2BD #ff0000 #ffffff

カラヌコヌドの前には垞に文字が付きたす。

凡䟋にオブゞェクトを远加したす


オブゞェクトを䜜成したら、それを凡䟋に远加する必芁がありたす。 凡䟋は次のようになりたす。

. = Background
# = Wall
P = Player
* = Crate
@ = Crate and Target
O = Target

各シンボルは、レベル内のオブゞェクトを衚したす。 ぀たり、このような文字のグリッドが衚瀺される堎合

#p.*.##
#.**.##
#..#..#
##....#
##...o#
#######

それは実際に私たちのレベルを説明しおいたす


䜜成された各オブゞェクトには、レベルでこのオブゞェクトを指定する文字、蚘号、たたは番号を割り圓おる必芁がありたす。 このように

P = player

凡䟋内のオブゞェクトのグルヌプ化


凡䟋にオブゞェクトのグルヌプを䜜成するこずもできたす。 たずえば、耇数の色付きのボックスがある堎合、これを行うこずができたす。

O = OrangeCrate
B = BlueCrate
G = GreenCrate

これにより、゚ディタヌレベルでボックスを䜿甚できるようになりたす。 ただし、コヌドを䜜成するには、次のようにそれらをLegendでグルヌプ化できたす。

Crates = OrangeCrate or GreenCrate or BlueCrate

そしお、党䜓ずしおは次のようになりたす。

=======
LEGEND
=======
O = OrangeCrate
B = BlueCrate
G = GreenCrate

Crates = OrangeCrate or GreenCrate or BlueCrate

これはなぜですか そのようなルヌルを䜜成する代わりに

[ > Player | OrangeCrate ] -> [ > Player | > OrangeCrate ]
[ > Player | BlueCrate] -> [ > Player | > BlueCrate ]
[ > Player | GreenCrate] -> [ > Player | > GreenCrate]

あなたは単に曞くこずができたす

[ > Player | Crates ] -> [ > Player | > Crates ]

そしお、このコヌドはオブゞェクトのグルヌプ党䜓に察しお機胜したす。

さらに、 コリゞョンレむダヌセクションでは、個々のオブゞェクトを入力するのではなく、グルヌプが配眮されおいるレむダヌを参照できたす。

衝突局


デフォルトでは、コリゞョンレむダヌセクションは次のずおりです。

Background
Target
Player, Wall, Crate

各行は、独自のレむダヌ内のオブゞェクトを遞択したす。 オブゞェクトのレむダヌの順序により、どのオブゞェクトが他のオブゞェクトの䞊に配眮されるかが決たりたす。 䞀番䞊の行のオブゞェクトは䞀番䞋のレむダヌに、次の行はその䞊のレむダヌに、ずいうように続きたす。 背景は、垞に䞀番䞋のレむダヌになるように䞀番䞊の行にある必芁がありたす。 1぀のレむダヌ内のオブゞェクトを互いに重ねるこずはできたせん。 ぀たり、次のこずはできたせん。

[ player wall ] -> [ player wall ]

異なるレむダヌのオブゞェクトを盞互䜜甚させるこずができたす。 たずえば、次のように蚘述できたす。

[ > Player | Target ] -> [ > Player | > Target ]

実隓


いく぀かの新しいオブゞェクトを䜜成したす。 プッシュのみが可胜なタむプのボックスを䜜成したす。 ドラッグのみが可胜な別のボックスを䜜成したす。 タッチするず消えるボックスを䜜成したす。 実隓を続けるず、すべおがどのように行われたかをよりよく芚えるこずができたす。

パヌト4.勝利条件


誰もが勝぀のが倧奜きです。 プレむダヌずしお、私たちは勝ちたいず思っおいたす。 このパヌトでは、ゲヌムに勝぀ための条件をプログラムする方法を孊びたす。

勝利条件


サンプルプロゞェクトをダりンロヌドし、Win Conditionsコヌドセクションに移動したす。 以䞋が衚瀺されるはずです。

All Target on Crate

各ゎヌルにボックスがある堎合、ゲヌムに勝ちたす。 3぀のボックスず2぀のゎヌルがある堎合、ゎヌルに2぀のボックスのみを蚭定するこずで勝ちたす。 スワップする堎合

All crate on target

その埌、各ボックスをタヌゲットに配眮する必芁がありたす。

1぀たたは耇数の条件がありたす。 耇数の条件の堎合、それらはすべお満たされる必芁がありたす。 たずえば、次のようになりたす。

All Target on Crate
All Target2 on Crate2

レベルにtargetずtarget2がある堎合、それぞれにcrateずcrate2がありたす。 レベルに特定の勝利条件を満たすために必芁なオブゞェクトが1぀もない堎合、たずえばtarget2がない堎合、この条件は自動的に満たされたす。

さたざたな皮類の勝利条件


勝利条件にはいく぀かの異なるタむプがありたす。

No Object

この堎合、レベルにそのようなオブゞェクトが1぀もないずきに勝利が埗られたす。

Some Object

レベルに指定されたタむプのオブゞェクトが少なくずも1぀ある堎合に勝ちたす。

Some Object1 on Object2

Object1のオブゞェクトの少なくずも1぀はObject2䞊になければなりたせん。

No Object1 On Object2

この状態は、 All Target on CrateのAll Target on Crateの反察です。 この堎合、これらのオブゞェクトはすべお、互いの䞊ではなく、互いに分離する必芁がありたす。 たた、異なる勝利条件を互いに組み合わせるこずができたす。

実隓


さたざたな勝利条件で実隓したす。 すべおのボックスがタヌゲット䞊にない堎合に勝぀ゲヌムを䜜成しおみおください。 たたは、特定のタむプのすべおのボックスを砎壊する必芁があるゲヌムを䜜成したすが、他のプッシュされたボックスがあなたの方法でありたす。

私の完成したプロゞェクト䟋はこちらでご芧いただけたす 。

パヌト5.遅いコマンド


PuzzleScriptには、「late」ずいう非垞に䟿利なコマンドがありたす。 ゲヌム内のむベントの発生順序は重芁であり、必芁な結果を埗るために埌で実行されるコヌドが必芁になる堎合がありたす。 このパヌトでは、 lateコマンドの䜿甚に぀いお説明したす。

なぜ必芁なのか


サンプルプロゞェクトを開き、次のコヌドをゲヌムに貌り付けお実行したす。

[ player | target ] -> [ player | ]

プレヌダヌがゎヌルの隣に立぀ずすぐにゎヌルが砎壊されるこずが予想されたすが、これは起こりたせん。 代わりに、プレむダヌがコヌスの隣に立぀ず、タヌゲットはコヌスから消えたす。 別のコヌドを詊しおください

late [ player | target ] -> [ player | ]

ゎヌルの隣に立぀ずすぐに消えたす。 これは、残りのコヌドがすべお実行された埌に、 遅延ずしお指定されたすべおが発生するために発生したした。 時々これが必芁です。

むベントの順序


パズルスクリプトのコヌドは、移動するたびに実行されたす。

  1. パズルスクリプトは、プレむダヌが移動したいこずを発芋したす
  2. 可胜な限り、ルヌルは䞊から䞋に読み取られお実行されたす。
  3. 可胜であればプレむダヌが移動する
  4. 遅いルヌルが適甚されたす

コンピュヌタヌはコヌドの最初の行から開始し、1行ず぀読み取りたす。 すべおの条件をチェックしたす。 したがっお、動き回ろうずするず、パズルスクリプトはすべおのルヌルを読み取り、条件が真であるかどうかを確認したす。真である堎合は、䜕かを実行したす。 たずえば、最初の行は次のようになりたす。

[ player | spikeTrap ] -> [ | spikeTrap ]

プレヌダヌがステヌクトラップの隣にいない堎合、コヌドは実行を続けたす。 これは、コヌドの行を曞く順序が重芁であるこずを意味したす。 堎合によっおは、lateコマンドを䜿甚できたすが、実際には時間の経過ずずもに孊習したす。

Lateを実際に䜿甚する方法


私の経隓では、オブゞェクトが互いに重なり合っおいるか、隣り合っおいるかを確認するずきにlateコマンドを䜿甚するのが最善ですが、他の堎合もありたす。 あるオブゞェクトが別のオブゞェクト䞊にあるかどうかを確認するず、lateコマンドを䜿甚しない限り、次のタヌンたでむベントは登録されたせん。

[ player spikeTrap ] -> [ spikeTrap ]

䞊蚘の堎合、プレむダヌは、trapに移動した埌の次のタヌンたで、杭のあるbyによっお殺されたせん。 プレむダヌを即座に死なせるには、レむトコマンドを远加するだけです。

late [ player spikeTrap ] -> [ spikeTrap ]

キャラクタヌが死亡したずきにレベル党䜓を再起動するには、次の操䜜を実行できたす。

late [ player spikeTrap ] -> restart

そしお、プレむダヌがステヌクスでトラップされたずきにレベルが再起動したす。

ここで完成したプロゞェクトの䟋を芋るこずができたす 。

パヌト6.効果音を操䜜したす。


Puzzle Scriptで玠晎らしいゲヌムを䜜成したしたが、ここでサりンドを远加する必芁がありたす。 どうやっおやるの 今、私はあなたに教えたす

サりンド生成


サンプルプロゞェクトを開きたす。 サりンドを远加したす。 ゲヌム画面の䞋に、癜いシンボルの付いた黒い正方圢が衚瀺されたす。 それらは音を生成するために䜿甚されたす。 各キャラクタヌはナニヌクなタむプのサりンドを生成し、クロスは䜜成されたサりンドを削陀したす。 四角をクリックしおみお、音を聞いおください。


黄色の数字は、音が必芁なコヌド内の堎所にコピヌしお貌り付ける必芁がある䞀意のコヌドです。

サりンドの䜿甚方法


適切なサりンドを芋぀けたら、それをゲヌムコヌドのサりンドセクションに挿入する必芁がありたす。


サりンドはいく぀かの方法で䜿甚できたす。 最も簡単なのは、新しい効果音sfxを䜜成するこずです。 番号を付ける必芁がありたす。 新しいsfxを䜜成し、数倀のサりンドIDを挿入するずきに0〜10の番号を割り圓おたす。 [サりンド]リストで、sfx0ずいう新しいsfxを䜜成し、生成されたサりンドを割り圓おたす。

sfx0 36301705

サりンドを䜿甚するには、むベントの埌にルヌルに挿入する必芁がありたす。 新しく䜜成されたsfx0をボックス砎壊むベントにアタッチしたしょうむベントはプロゞェクトの䟋に既に存圚したす

(The player destroys a crate)
[ > Player | CrateVanish ] -> [ Player | ] sfx0

サりンドは、次のような特定のむベントで再生するように宣蚀するこずもできたす。

Crate MOVE 36772507

この堎合、クレヌトを移動するずサりンドが再生されたす。 CratePullオブゞェクトをドラッグアンドドロップするための新しいサりンド゚フェクトを生成し、CratePullを移動したずきに再生するようにしたす。

CratePull MOVE 12735307

むベントのサりンドは、サりンドセクションでのみ宣蚀する必芁がありたす。ルヌルで蚀及する必芁はありたせん。

音声再生方法のリスト


以䞋は、パズルスクリプトのドキュメントから取埗した、䜿甚できるさたざたなむベントサりンドのリストです。

オブゞェクトアクション541566-移動䞭にオブゞェクトがアクションにさらされたずきに再生されたす。

オブゞェクト䜜成641667-特定のオブゞェクトを䜜成するずきに再生されたす。

EndGame 5416789-ゲヌムの終了時に再生されたす。

EndLevel 6417822-レベルの完了埌に再生されたす。

Object CantMove 781673-オブゞェクトが任意の方向ぞの移動に倱敗したずきに再生されたす。

プレヌダヌCantMove Down Left 464674-オブゞェクトが䞋たたは巊に移動しようずしお倱敗したずきに再生されたす。

CloseMessage 344456-プレヌダヌがメッセヌゞボックスを閉じるず再生されたす。

Object Destroy 187975-オブゞェクトが砎壊されるず再生されたす。

オブゞェクトの移動264567-オブゞェクトが任意の方向に正垞に移動したずきに再生されたす。

オブゞェクトの巊䞋ぞの移動765432-オブゞェクトが正垞に䞋たたは巊に移動したずきに再生されたす。

Object Move Horizo​​ntal 345367-オブゞェクトが氎平に正垞に移動したずきに再生されたす。 垂盎を䜿甚するこずもできたす。

再起動7865435-プレヌダヌが再起動ボタンRを抌すず再生されたす。

SFX0 765743 - SFX0からSFX10たでの任意の倀を指定できたす。 これらは、ルヌルから実行できる特別なサりンドむベントです。

ShowMessage 478483-メッセヌゞが衚瀺されたずきに再生したす。

StartGame 234626-新しいゲヌムの開始時にプレむしたす。

開始レベル765436-各レベルの開始時に再生されたす。

TitleScreen 876543-スクリヌンセヌバヌを読み蟌んだ埌に再生したす。

元に戻す436234-プレヌダヌがキャンセルキヌZを抌すず再生されたす。

moveおよびcantmoveの方向を指定しお、異なる方向に移動するずきに異なるサりンドが再生されるようにするこずができたす。

プロゞェクトの完成䟋はこちらです。

パヌト7.音楜を再生する


パズルスクリプトでゲヌムを䜜成する方法を孊びたしたが、音楜を远加するのは玠晎らしいこずではないでしょうか。 それは可胜であり、今私はそれを行う方法をお教えしたす。

泚珟時点では、パズルスクリプトのこの機胜が壊れおいるようですので、次のパヌトに進んでください。

どうする


プロゞェクトの空癜を開きたす 。 パズルスクリプトでは次のように音楜が機胜したすYoutubeから1぀のビデオぞのリンクをゲヌムに挿入するず、PuzzleScriptはこのビデオのすべおのサりンドを自動的に再生したす。 Youtubeを開いお任意のビデオを遞択するか、次を䜿甚したす。

youtube.com/watch?v= CKAc3nYEatw

ビデオから音楜を再生するには、䞀意のビデオIDを取埗する必芁がありたす。 䞊蚘の行の緑の郚分は䞀意のIDです。


プロゞェクトの冒頭にある著者のホヌムペヌゞの䞋に、youtubeラベルを远加し、その埌に次のような䞀意のビデオIDを远加したす。

youtube CKAc3nYEatw

正しく機胜するこずを確認するには、「共有」をクリックし、ゲヌムのリンク゜ヌスコヌドのリンクではありたせんをクリックしたす。 ゚ディタヌ内でのテスト䞭、パズルスクリプトの音楜は再生できたせん。 ゲヌムに音楜を远加したい堎合は、YouTubeにビデオずしおアップロヌドし、プロゞェクトに䞀意のIDを挿入する必芁がありたす。 各プロゞェクトに含めるこずができるYouTubeビデオは1぀だけです。

プロゞェクト䟋


パズルスクリプトプロゞェクトの䟋はこちらにありたす 。

パヌト8.アクションコマンドの䜿甚方法


ブロックの移動、プッシュ、ドラッグの方法はすでに知っおいたすが、 スペヌスなどの特定のキヌを抌しお䜕かをする必芁がある堎合はどうでしょうか

PuzzleScriptでの入力の可胜性は非垞に限られおおり、䞻に矢印キヌ、キャンセルするZ、再起動するRであり、それらを倉曎するこずはできたせん。しかし、゚ンゞンは私たちのための䜙分なキヌ䞎えアクション抌す- スペヌスバヌを、たたは抌すXを。アクション

チヌムずの連携は、䞊蚘の圢匏に埓いたす。基本的なPuzzleScriptコヌド圢匏を䜿甚したした。

[ ] -> [ ]

条件が真の堎合、むベントを実行したす。actionコマンドも同じ方法で䜿甚されたすが、独自のルヌルがありたす。次のようになりたす。

[ Action ] -> [ ]

Actionコマンドの䜿甚䟋を次に瀺したす。

[ Action Player ] -> [ Crate ]

たず、アクションは垞に条件の最初の単語です。

次に、ゲヌム内の特定のオブゞェクトに圱響を䞎えたい堎合、条件ずむベントの䞡方でこのオブゞェクトに蚀及する必芁がありたす別のオブゞェクトに蚀及する堎合、プログラムは元のオブゞェクトを削陀し、新しいオブゞェクトに眮き換えたす。オブゞェクトを指定しない堎合、圌はただ匕退したす。

最埌に、単語Actionは条件でのみ䜿甚する必芁がありたすが、条件ずむベントの䞡方で䜿甚する䟡倀がある堎合もありたす。これに぀いおは以䞋で説明したす。

ゲヌムプロゞェクトに衚瀺されおいるコヌドを確認したす。この䟋から始めるこずができたす。スペヌスバヌたたはXを抌すず、プレヌダヌがボックスになりたす。

条件は、[ アクションキヌを抌し、 レベルにプレヌダヌオブゞェクトがある堎合 ]-> [ プレヌダヌオブゞェクトをボックスに眮き換える ]の堎合です

。では、プロゞェクト䟋で次のコヌドを詊しおみたしょう。

[ Action Player | Crate ] -> [ Player | > Crate ]



䞊の画像のように、四方が箱で囲たれおいるこずを確認しおください。アクションは䞀床に1぀のボックスのみに圱響するこずに気付くでしょう。理由は正確にはわかりたせんが、Actionコマンドを䜿甚しお耇数のオブゞェクトに圱響を䞎えたい堎合は、条件ずむベントの䞡方でオブゞェクトを指定する必芁がありたす。

コヌドを曎新されたバヌゞョンに眮き換えたす。

[ Action Player | Crate ] -> [ Action Player | > Crate ]


これで、すべおのボックスを䞀床にプッシュできたす。アクションを耇数のオブゞェクトに適甚する必芁がある堎合は、Actionを条件ずむベントの䞡方に配眮したす。

パヌト9.耇数の条件の確認


爆匟ず砎壊可胜なブロックの存圚など、いく぀かの条件を確認する方法を孊びたしょう。


サンプルプロゞェクトを開きたす。次に、次のコヌドを远加したす。

late [Player Switch][DoorClosed] -> [Player Switch][DoorOpen]

コヌドは次の圢匏に埓いたす。

[ 1 ] [ 2 ] -> [ 1 ] [ 2 ]

条件1がtrueで条件2がtrueの堎合、ステップ1ずステップ2が満たされたすこの堎合、条件1はプレむダヌがスむッチをオンにしおいるかどうかをチェックしたす。「はい」の堎合、条件2がチェックされたす。぀たり、閉じたドアのレベルでの存圚ですか。条件が真の堎合、DoorClosedオブゞェクトはDoorOpenオブゞェクトに倉わり、ドアを開きたす。


ヒヌロヌがスむッチを離れるずきにドアを閉じる必芁があるずしたす。これは、プレむダヌがボックスをスむッチに抌しおドアを開くようにするためです。このようなものを曞くこずができたす

late [Player | Switch][DoorOpen] -> [Player | Switch][DoorClosed]

プレむダヌがスむッチの隣に立っおおり、レベルのどこかにドアが開いおいる堎合、ドアを閉じたす。最埌に、ボックスをスむッチに抌し蟌む堎合、ドアを開いたたたにしおおく必芁がありたす。

late [Crate Switch][DoorClosed] -> [Crate Switch][DoorOpen]

匕き出しがスむッチにある間、ドアは開いたたたになりたす。ここで

完成したプロゞェクトの䟋を芋るこずができたす。

パヌト10.ブレヌクポむントの䜜成


パズルスクリプトをプレむするための良いアむデアをお持ちかもしれたせんが、死亡した堎合にプレヌダヌが回埩するためにコントロヌルポむントチェックポむントが必芁です。 どうやっおやるの ずおも簡単です。今からその方法を説明したす。


ブレヌクポむントを䜜成する


サンプルプロゞェクトを開きたす。ここで、ブレヌクポむントをプログラムする必芁がありたす。これには1行のコヌドで十分です。

late [ Player FlagRed ] -> CHECKPOINT

FlagRedはチェックポむントです。プレヌダヌが旗の䞊にあるずき、このコヌドはチェックポむントCHECKPOINTを䜜成したす。遅延を䜿甚しない堎合、チェックポむント機胜は機胜したせん。

ゲヌムをテストしたす。コントロヌルポむントを通過し、さらに少し進んでRを抌したす。コントロヌルポむントから開始する必芁がありたす。

耇数の制埡点


耇数のコントロヌルポむントがある堎合、ゲヌムはプレむダヌが最埌にアクティブにしたものを䜿甚したす。

以前に䜿甚したコントロヌルポむントの再アクティブ化を回避するには、別のオブゞェクトに倉曎する必芁がありたす。これを行うには、赀いフラグの䞋にあるコヌドのOBJECTSセクションに癜いコピヌを䜜成したす。

FlagWhite
White Orange
.1

.00..
.000.
.1

.1


次に、凡䟋のこの行を曞き換えたす。

Flag = FlagRed or FlagWhite

オブゞェクトのグルヌプを䜜成できたす。この堎合、FlagはFlagRedたたはFlagWhiteのいずれかになりたす。グルヌプ化されたオブゞェクトの少なくずも1぀にシンボルが割り圓おられおいる限りFlagRedシンボルFを割り圓おたした、グルヌプの他のオブゞェクトにシンボルを割り圓おる必芁はありたせん。コヌドでのみアクセスでき、レベル゚ディタヌではアクセスできたせん。その埌、グルヌプにコリゞョンレむダヌを割り圓おるこずができたす。フラグなどのオブゞェクトのグルヌプぞのアクセスは、グルヌプ党䜓を指したす。したがっお

[ > Player | Flag ] -> [ > Player | ]

このコヌドは、赀ず癜の䞡方のフラグに圱響したす。

フラグオブゞェクトの倉曎


FlagRedをFlagWhiteに倉曎する方法は次のずおりです。

late [ Player FlagRed ] -> [ Player FlagWhite ]

タヌンの終わりにプレヌダヌが赀旗になっおいる堎合、それを癜に倉えたす。ただし、ブレヌクポむントを䜜成した埌にフラグのグラフィックを倉曎する必芁がありたす。コヌドは䞊から䞋に読み取られるためです。プログラムをテストしたす。

2番目のフラグを倉曎する


プロゞェクトには2぀のフラグがありたす。2番目のフラグがアクティブになったずきに、叀い癜いフラグが黒に倉わり、再び䜿甚できないこずを確認したしょう。以䞋を蚘述したす。

late [ Player FlagRed ][ FlagWhite] -> [ Player FlagRed ][FlagBlack]

コヌドでは、プレヌダヌが赀旗の䞊にあり、ゲヌム内のどこかに癜旗がある堎合、癜旗を黒にする必芁がありたす。コヌドは䞊から䞋に読み取られるため、次の順序でこれを行う必芁がありたす。

late [ Player FlagRed ] -> CHECKPOINT
late [ Player FlagRed ][ FlagWhite] -> [ Player FlagRed ][FlagBlack]
late [ Player FlagRed ] -> [ Player FlagWhite ]

コヌドがこの順序である理由がわからない堎合は、行の順序を倉曎しおプログラムをテストしおください。独自の問題を解決するには、䞀歩埌退しおコヌドが䜕をするかを熟考するこずを孊ぶ必芁がありたす。しかし、ヒントを瀺したす-あなたがプレむするずき、次の誀った䟋のコヌドの最埌の行で赀い旗はどこにありたすか

[ > Player | Crate ] -> [ > Player | > Crate ]
[ > Crate | Flag ] -> [ Crate | Flag ]
late [ Player FlagRed ] -> CHECKPOINT
late [ Player FlagRed ] -> [ Player FlagWhite ]
late [ Player FlagRed ][ FlagWhite] -> [ Player FlagRed ][FlagBlack]

完成したサンプルプロゞェクトはこちらからご芧ください。さらに、アニメヌションを䜜成する最も簡単な方法を瀺したした。次のパヌトでは、爆発などのより耇雑なアニメヌションの䜜成に぀いお説明したす。

パヌト11.アニメヌション


PuzzleScriptでアニメヌションを䜜成するには2぀の方法がありたす。そのうちの1぀はリアルタむムを䜿甚したすが、この郚分では説明したせん。もう1぀は、爆発やキャラクタヌが垂盎梯子を䞋るなど、1回限りの簡単なアニメヌションに䜿甚されたす。サンプルプロゞェクトを

開きたす。爆匟ず爆発の䞀連のショットを䜜成し、それらをアニメヌション化したす。

オブゞェクトアニメヌション


2Dアニメヌションの堎合、たずえばマリオを実行するスプラむトなど、ある状態から別の状態に移動するオブゞェクトの耇数の図面が必芁です。4フレヌムのアニメヌションが含たれおいたす。


アニメヌションのあるフレヌムから別のフレヌムぞの移行をシミュレヌトするために、PuzzleScriptでアニメヌションのフレヌムになる耇数のオブゞェクトを䜜成し、コヌドを䜿甚しおそれらを切り替えたす。

爆匟


そのような爆匟オブゞェクトを䜜成したす。

Bomb
black yellow grey
..1..
..1..
.000.
00020
.000.

レむダヌず凡䟋に忘れずに远加しおください。

爆発をアニメヌション化するには、アニメヌションの各フレヌムを個別のオブゞェクトずしお䜜成し、コヌド内でそれらを切り替える必芁がありたす。爆発オブゞェクトを䜜成したしょう。

Explosion1
black yellow grey red
..1..
..1..
.000.
00320
.000.

Explosion2
black yellow grey red
..1..
..1..
.333.
03330
.333.

Explosion3
black yellow grey red
..1..
.333.
33333
33333
.333.

Explosion4
black yellow grey red
.333.
33333
33333
33333
.333.

Explosion5
black yellow grey red
.333.
33333
33.33
33333
.333.

Explosion6
black yellow grey red
.333.
3...3
3...3
3...3
.333.

Explosion7
black yellow grey red
.....
.....
.....
.....
.....

必芁なアニメヌションのフレヌムを知るために、オブゞェクトに正しく番号を付けたす。それらをレむダヌず凡䟋に远加したら、数行のコヌドを远加できたす。

[Explosion7] -> []
[Explosion6] -> [Explosion7]
[Explosion5] -> [Explosion6]
[Explosion4] -> [Explosion5]
[Explosion3] -> [Explosion4]
[Explosion2] -> [Explosion3]
[Explosion1] -> [Explosion2]
[Bomb] -> [Explosion1]

このコヌドを远加しお、レベルに爆匟を配眮しおゲヌムを開始しおください。動きごずに爆匟のアニメヌションが1フレヌムず぀倉化するこずに気付くでしょう。オブゞェクトを切り替えお、アニメヌションを䜜成したす。

アニメヌションを切り替える順序は重芁です。最埌のフレヌムは䞊に、最初のフレヌムは䞋にあるはずです。コヌドは䞊から䞋ぞず読たれるこずを忘れないでください。アニメヌションのフレヌムの順序が異なる堎合、倉曎は衚瀺されたせん。最埌のフレヌムのみが衚瀺され、この堎合、爆匟は単玔に消えたす。グラフィックが衚瀺される前でも、1぀のフレヌムで最初のフレヌムに、次に2番目のフレヌムに、ずいうように倉化したす。最埌のフレヌムを先頭に配眮するこずにより、各タヌンで次の倉曎が衚瀺されたす。

再び䜿甚する


すべおを䞀緒にアニメヌション化するには、再びチヌムが必芁です。ここでも、すべおのコヌドを読み取った埌、PuzzleScriptが䞀時停止し、すべおのコマンドを再床実行しおコヌドを再床読み取りたす。重力、氷䞊での滑り、そしお私たちの堎合はアニメヌションに䜿甚できたす。必芁なのは、コヌドを次のように曞き換えるこずだけです。

[Explosion7] -> []
[Explosion6] -> [Explosion7] again
[Explosion5] -> [Explosion6] again
[Explosion4] -> [Explosion5] again
[Explosion3] -> [Explosion4] again
[Explosion2] -> [Explosion3] again
[Explosion1] -> [Explosion2] again
[Bomb] -> [Explosion1] again

ゲヌムをテストしたす。爆匟アニメヌション党䜓がすぐに再生されるこずがわかりたす。あなたの意芋ではそれが遅すぎるか速い堎合は、速床を倉曎するこずができたす。プログラムテキストの冒頭で、ホヌムペヌゞの䞋に次のコヌドを蚘述したす。

again_interval 0.1

これは、PuzzleScriptがpreludeず呌ぶものの䞀郚です。これは、残りのコヌドの前に、ゲヌムの動䜜を決定する远加のルヌルを蚭定できる堎所です。これで、アニメヌションがより速く再生されるはずです。again_intervalの埌に数倀を倉曎しおみお、倉曎されたこずを確認しおください。ここで

完成したプロゞェクトの䟋を芋るこずができたす。

パヌト12.重力


通垞、PuzzleScriptはトップダりンでゲヌムを䜜成するために䜿甚されたすが、実際には、PuzzleScriptルヌルが制限されおいるにもかかわらず、䞀郚のサむドスクロヌラヌ芁玠をシミュレヌトできたす。このパヌトでは、重力を実装する方法を説明したす。

プロゞェクト䟋


サンプルプロゞェクトを開きたす。単玔なレベルを䜜成したした。プレヌダヌ、棚の䞊のボックス、䞋のドアがありたす。プレむダヌが棚から箱を抌したずきに、地面に萜ちるようにしたす。たた、プレヌダヌが゚ッゞを離れるずきに地面に萜ちるようにしたす。

秋のステヌゞ1


䜿甚するコヌドの最初の郚分は次のずおりです。

down [ Player | no Object ] -> [ | Player ]
down [ Crate | no Object no Player ] -> [ | Crate ]

ボックスを端から抌しおみおください。箱を動かすず空䞭にぶら䞋がるこずに気づくでしょうが、別の動きをするず地面に萜ちたす。ここでいく぀かのこずが起こりたす。

たず、downキヌワヌドに぀いお説明したしょう。downを远加するこずにより、䞋方向にのみ適甚されるずいう事実にルヌルを制限したす。それがボックスが䞋に移動する理由です。downをrightに眮き換えるず、反重力のゲヌムのように、ボックスが右の壁に匕っかかっおいるこずがわかりたす。そうしおみおください。

次に、䜕か異垞なこずをしたす。プレむダヌが特定のオブゞェクトたずえば、ボックスの隣にいるかどうかを確認する代わりに、䞀般化されたオブゞェクトの隣にいるかどうかを確認したす。。サンプルコヌドの凡䟋を芋るず、オブゞェクトをオブゞェクトのグルヌプずしお定矩しおいるこずがわかりたす。぀たり、オブゞェクトずいう単語を䜿甚するたびに、オブゞェクトのグルヌプを意味したす。぀たり、これらのオブゞェクトがプレヌダヌの䞋にあるかどうかを確認したす。そうでない堎合は、プレヌダヌにこの空きスペヌスを占有するように呜什し、単語がダりンしおいるために前のスペヌスを残しお、䞋方向に進みたす。

しかし、棚ず衝突した埌、ボックスは次の動きたで萜䞋せず、すぐに地面に到達するこずにも気付くこずができたす。この遅延クラッシュを排陀するには、lateキヌワヌドを䜿甚できたす。

late down [ Player | no Object ] -> [ | Player ]
late down [ Crate | no Object no Player ] -> [ | Crate ]

しかし、フレヌムごずに埐々に䜎䞋させる方法は

秋のステヌゞ2


次に、ランダムキヌワヌドを䜿甚したす。コヌドを次のように曞き盎したす。

random down [ Player | no Object ] -> [ | Player ]
random down [ Crate | no Object no Player ] -> [ | Crate ]

コヌドを実行したす。以前のコヌドず非垞によく䌌おいたすが、1぀の重芁な違いがありたす。ボックスは空䞭でフリヌズしたすが、プレヌダヌが移動するたびに、1぀のセルに萜ちたす。これは、単語randomによるものです。厳密に蚀えば、randomはランダムな芁玠を持぀ゲヌムを䜜成するように蚭蚈されおいたすが、ここでは䟿利です。察応するコヌド行が1タヌンに1回実行されるようにしたす。PuzzleScriptは、1回の動䜜で各ルヌルを可胜な限り䜕床も実行したす。その埌、プレヌダヌにグラフィックの倉曎が衚瀺されたす。それが、箱が即座に地面に萜ちたように芋える理由です。ただし、「ランダム」ずいう単語を䜿甚する堎合、䞀床に1぀のセルにしか該圓したせん。

秋のステヌゞ3


次に、キヌワヌドを再床远加したす。

random down [ Player | no Object ] -> [ | Player ] again
random down [ Crate | no Object no Player ] -> [ | Crate ] again

ゲヌムを起動したす。すべおがほが完璧です。箱は空䞭でしばらく凍結したすが、再び移動するず、埐々に地面に萜ちたす。我々はすでにキヌワヌドに粟通しおいる再び実際には、それは圓然の終わりにPuzzleScriptが再びコヌドを読み取るこずを意味し、すべおのチヌムを満たすためにしようず、再び圌ができるよう、その埌䜕回も再びそれを繰り返し、別のコヌスずしお、その埌、䞀時停止したす。ここで重芁なこずは、圌が再び動きず動きの間で䞀時停止するこずです。

最終ステヌゞ


そしお最埌の仕䞊げ。ボックスが端から抌し出された盎埌に地面に萜ちるようにするには、䜜成したコヌドの䞊に別のコヌド行を远加する必芁がありたす。

[moving Player] -> [moving Player] again
random down [ Player | no Object ] -> [ | Player ] again
random down [ Crate | no Object no Player ] -> [ | Crate ] again

プレヌダヌの前の角括匧[]で䜿甚される移動キヌワヌドは、プレヌダヌが動いおいるかどうかを確認しおいるこずを意味したす。これは、プレむダヌが移動した堎合、移動を続行し、チヌムを再び実行するように呜じるこずを意味したす。その埌すぐに、キヌワヌドを再び䜿甚するすべおが機胜したす。私たちの堎合、それは萜䞋する箱のアニメヌションです。ここで完成したプロゞェクトの䟋を芋るこずができたす。



パヌト13.進行方向の確認


方向指瀺


䜕かを䞀方向だけで確認する必芁がある堎合がありたす。たずえば、氎平方向にのみ抌し蟌めるブロックを䜜成したり、巊にしか歩けないアヒルを䜜成したりする必芁がありたす。

堎合によっおは、特定の方向でのみむベントが発生するこずを瀺すこずができたす。

PuzzleScriptを開き、基本的な䟋に基づいおゲヌムを䜜成し、次のコヌドでルヌルに眮き換えたす。

[ Left Player ] -> [ Crate ]

ゲヌムを起動しお、䜕が起こるかを芋おください。

巊に行こうずするず、プレヌダヌはボックスに倉わりたす。これは、方向付けの仕組みの良い䟋です。

私たちはすでにPuzzleScriptコヌドを説明した圢匏に慣れおいたす。

[ ] -> [ ]

むベントがtrueの堎合、むベントが発生したす。

しかし、今、方向を確認する必芁があるずき、圌は新しい芏則に埓いたす

[ Movement Direction Object Affected ] -> [ New State of Object ]

これが以前のコヌドです

[ Left Player ] -> [ Crate ]

プレヌダヌが巊Leftに移動しおいるかどうかを確認したす。その堎合は、プレヌダヌをボックスオブゞェクトに眮き換えたす。

目的地の皮類


次のタむプの宛先から遞択できたす。



パヌト14.カスタム移動の䜜成


䜕らかの理由で、ゲヌムにカスタムの移動が必芁になる堎合がありたす。アヒルは巊にしか歩くこずができず、箱は氎平にしか抌すこずができたせん。ずおも簡単です。基本的なPuzzleScriptコヌド圢匏をもう䞀床芋おみたしょう。

[ ] -> [ ]

条件が真の堎合、むベントが発生したす。カスタム移動を䜜成するには、次の手順を実行したす。

[ Condition ] -> [ Movement Direction Object To Move ]

以䞋に䟋を瀺したす。

[ Player | Crate ] -> [ Player | Left Crate ]

PuzzleScriptをダりンロヌドし、基本䟋を開き、このコヌドを貌り付けお、䜕が起こるかを確認したす。壁のないボックスに移動したす。

プレむダヌがボックスの近くにいるず、ボックスが巊に抌されおいるこずがわかりたす。ただし、Lateキヌワヌドがないため、これは最初の䞀歩を螏み出した埌のコヌスで発生したす。

参照する堎合、むベントはただオブゞェクトずを陀いお動きの方向、䟋えば巊、PuzzleScriptは蚀った方向にオブゞェクトを移動しようずしたす。そのため、プレヌダヌではなくボックスが巊に移動したす。巊はCrateの隣です。

前の郚分のこのコヌドを芚えおいたすか

[ ] -> [ ]

オブゞェクトの隣の状態で移動方向を指定するず、このオブゞェクトがこの方向に移動しおいるかどうかがチェックされたす。これは重芁な違いです。 次のように曞き換えるこずができたす。

[ ] -> [ ]

蚱容されるカスタム移動


次のいずれかの単語を䜿甚しお、カスタムの動きを䜜成できたす。


氎平たたは垂盎を䜿甚するこずはできたせん。PuzzleScriptは、オブゞェクトをどの方向に移動したいかを理解できないため、これを行うには倚くの回避策が必芁になりたす。特定の方向を瀺す必芁がありたす。

パヌト15.オブゞェクトの暪にあるセルの確認


オブゞェクトの隣にあるものを確認する必芁がある堎合がありたす。これは非垞に簡単です。別のPuzzleScriptコヌド圢匏を芋おみたしょう。

[ ] -> [ ]

それは

[ ] -> [ ]

オブゞェクトの偎面を確認するには、1぀の芁玠を远加する必芁がありたす。圢匏は次のずおりです。

[ object1 | object2 ] -> [ object1 | object2 ]

条件の前に、オブゞェクトのどちら偎でチェックを実行するかをチェックしたす。

条件内では、少なくずも2぀のセルが必芁であるず想定しおいたす。セルは、実際には、1぀のスペヌスに配眮され、互いに隣接しおいないオブゞェクトです。

[ ]

[ | | ]

最初のセルは、蟺を確認するオブゞェクトです。2番目のセルは、存圚を確認するオブゞェクトです。次の䟋を詊しおください。

Left [ Player | Crate ] -> [ Player | ]

䞊蚘のコヌドは、プレヌダヌの巊偎の正方圢にあるボックスを削陀したす。

Left [ Crate | Crate ] -> [ Player | Crate ]

このコヌドは、ボックスが別のボックスの巊偎にあるかどうかを確認したす。その堎合、偎面がチェックされおいるボックスがプレむダヌの新しいオブゞェクトになりたす。

Left [ Crate | Crate ] -> [ Crate | Player ]

䞊蚘のコヌドにも同じチェックがありたすが、巊偎のボックスがプレヌダヌのオブゞェクトになりたす。

Left [ Crate | Crate | Crate ] -> [ Crate | Player | Crate ]

このコヌドも同様のパタヌンを䜿甚しおいたす。チェックボックスのすぐ巊にあるボックスは、3぀のボックスが暪に䞊んでいる堎合にプレヌダヌになりたす。

Left [ Crate | Crate | Crate ] -> [ Crate | Crate | Player ]

3぀のボックスが暪に䞊んでいる堎合、巊端のボックスがプレむダヌになりたす。

これらの䟋をそれぞれテストするず、パタヌンの理解が始たりたす。最初のセルは、次のものを確認するためにチェックするオブゞェクトです。次のセルは、最も近いものから最も遠いものたで、チェック察象のオブゞェクトです。

キヌワヌド



画像

画像

画像

画像

Source: https://habr.com/ru/post/J428906/


All Articles