ゼルダの伝説におけるリンクの動き
私は最近ゼルダ(私のすべての時間favゲーム)の元の伝説についての誰かと話しました、そして、彼は開発者がどのようにグリッドの中でリンクの動きを続けたかについて言及しました.私は前にそれについて考えたことがないと私は本当にクールだと思った.これは微妙なのですが、ここでどのようにリンクをするときには、プレーヤーのターンには、グリッドにスナップインするように見える見ることができます
私はもっと知りたかったので、私は少しgoogledと呼ばれるブログ記事に遭遇Movement Mechanics 彼が何が起こっているかについて説明するトロイギルバートによって.それを合計するには、リンクと背景のタイルを構成するスプライトは16 x 16ですが、リンクは8 x 8である半分のタイルグリッドに沿って移動します.プレイヤーは、リンクを移動することができますダウン、左、または右の1つのピクセルを一度に、ゲームは常にリンクを8 x 8のグリッドに彼は障害の間に歩くことができるので、エッジに巻き込まれることなく戸口を維持します.
私も、コードワークショップによってYouTubeビデオに遭遇しました.私はゲームメーカーのスタジオを使用しないが、私はインストラクターが説明し、私のニーズのためにそれを適応したので、私はこの手法がどのように動作するかを見ることができる従った.
コードワークショップでは、方向リンクで移動すると、他の軸上のグリッドに整列していることを説明します.あなたがX軸に沿って左または右に動くならば、リンクはy軸に整列します、そして、あなたがy軸に沿って上下に動くならば、彼はx軸に整列します.
PICO - 8でデモを作りましたので、コードワークショップの
残っているピクセルの中間点より大きい場合、
この関数から返される値は、プレイヤーの
例えば、プレイヤーがプレス
8 x 8グリッドに沿ってプレーヤーの16 x 16スプライトSNAPを示すために、PICO - 8の私のバージョンのGIFは、ここにあります.
数ヶ月前にゲームをした(上記のGIFでロボットバディを搭載)プレーヤーは16 x 16のグリッド内のピクセルで移動するが、動きは….まあ、悪い.プレイヤーのサイズはスプライトが移動しなければならなかったスペースにちょうど同じくらいだったので、私の性格は角に固定しました.私は戻って戻って、このテクニックで動きロジックを更新するのを待つことができない!
Movement Mechanics by Troy Gilbert
Nerdy Teachers - それがしばらくあった時から、私が若干のPIO - 8ものの上で私の記憶をリフレッシュするのに用いられるものすごい資源!
私はもっと知りたかったので、私は少しgoogledと呼ばれるブログ記事に遭遇Movement Mechanics 彼が何が起こっているかについて説明するトロイギルバートによって.それを合計するには、リンクと背景のタイルを構成するスプライトは16 x 16ですが、リンクは8 x 8である半分のタイルグリッドに沿って移動します.プレイヤーは、リンクを移動することができますダウン、左、または右の1つのピクセルを一度に、ゲームは常にリンクを8 x 8のグリッドに彼は障害の間に歩くことができるので、エッジに巻き込まれることなく戸口を維持します.
私も、コードワークショップによってYouTubeビデオに遭遇しました.私はゲームメーカーのスタジオを使用しないが、私はインストラクターが説明し、私のニーズのためにそれを適応したので、私はこの手法がどのように動作するかを見ることができる従った.
コードワークショップでは、方向リンクで移動すると、他の軸上のグリッドに整列していることを説明します.あなたがX軸に沿って左または右に動くならば、リンクはy軸に整列します、そして、あなたがy軸に沿って上下に動くならば、彼はx軸に整列します.
PICO - 8でデモを作りましたので、コードワークショップの
align_to_grid
関数Luaを使用します.function align(val, alignTo)
local remainder = val % alignTo
local halfway = alignTo/2
if (remainder > halfway) then
return alignTo - remainder
else
return -remainder
end
end
The align
関数は2つのパラメータを取ります:val
プレーヤーの現在のXまたはYの場所(私は少し詳細に説明します)、そしてalignTo
, あなたのプレーヤーが整列するピクセルの量です.リンクは8 x 8のグリッドに整列しているのでalignTo
.remainder
xまたはyの位置から残っているのはalignTo
値.残っているピクセルの中間点より大きい場合、
alignTo - remainder
, otherwise return -remainder
.この関数から返される値は、プレイヤーの
x
or y
値.例えば、プレイヤーがプレス
left
彼らは負のx軸に沿って移動したいvx
がプレイヤのspeed
そしてx
関数の値をさらに小さくします.この場合、align()
は、プレイヤーのy
値.if (btn(⬅️)) then
vx = -1
y+=align(y, 8)
end
私がこれをした方法はコードワークショップがどのようにしたかと少し異なります.8 x 8グリッドに沿ってプレーヤーの16 x 16スプライトSNAPを示すために、PICO - 8の私のバージョンのGIFは、ここにあります.
数ヶ月前にゲームをした(上記のGIFでロボットバディを搭載)プレーヤーは16 x 16のグリッド内のピクセルで移動するが、動きは….まあ、悪い.プレイヤーのサイズはスプライトが移動しなければならなかったスペースにちょうど同じくらいだったので、私の性格は角に固定しました.私は戻って戻って、このテクニックで動きロジックを更新するのを待つことができない!
参考文献
Nerdy Teachers - それがしばらくあった時から、私が若干のPIO - 8ものの上で私の記憶をリフレッシュするのに用いられるものすごい資源!
Reference
この問題について(ゼルダの伝説におけるリンクの動き), 我々は、より多くの情報をここで見つけました https://dev.to/robotspacefish/game-studies-link-s-movement-in-the-legend-of-zelda-48odテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol