ウェアラブルなアイテムのセットごとに、プレーヤーに装着できるアイテムの配列があると考えています。たとえば、次のようになります。
var AwesomeDragonProofDiamondArmour =
{
head: 'awesome-diamond-helmet.png',
chest: 'awesome-diamond-chest.png',
legs: 'awesome-diamond-legs.png',
boots: 'awesome-diamond-boots.png'
};
そして、プレーヤーの設定で同じ配列を持つことになります。もちろん、多くの RPG では、素晴らしいダイヤモンド アーマーのフルセットから始めるのではなく、革と、おそらく一種の優れたチェスト プレートから始めます。
var RubbishLeatherArmour =
{
head: 'rubbish-leather-helmet.png',
chest: 'rubbish-leather-chest.png',
legs: 'rubbish-leather-legs.png',
boots: 'rubbish-leather-boots.png'
};
var SortOfGoodSteelArmour =
{
head: 'sort-of-good-steel-helmet.png',
chest: 'sort-of-good-steel-chest.png',
legs: 'sort-of-good-steel-legs.png',
boots: 'sort-of-good-steel-boots.png'
};
var Player =
{
head: RubbishLeatherArmour.head,
chest: SortOfGoodSteelArmour.chest,
legs: RubbishLeatherArmour.legs,
boots: RubbishLeatherArmour.boots
}
これらの PNG は透明で、これらを基本的なプレーヤー グラフィックスと合成すると、紙人形のキャラクターになります。オーバーヘッドを減らすには、これらのグラフィックスを 1 つのスプライト シートに配置し、次のように各項目の X、Y、幅、高さを格納するのが賢明な場合があります。
var RobustMetalArmour =
{
head: [120, 120, 20, 20],
chest: [140, 120, 20, 20],
legs: [160, 120, 20, 30],
boots: [180, 120, 20, 10]
}
配列は[x、y、幅、高さ]です。これには 1 つのサイズしかないという欠点があるため、キャラクターがすべて同じサイズでない限り (実際にはタイル ベースの RPG ではかなり可能です)、キャラクターの各サイズのすべてのグラフィックスを作成するには時間がかかる場合があります。
もう 1 つの方法は、キャンバス描画関数を使用してグラフィックを描画することです。この関数では、たとえばヘルメットの ax/y/width/height を指定してから、ヘルメットを任意のサイズで描画します。このようなもの:
function drawPlus(ctx, x, y, size, colour)
{
ctx.lineWidth = 1;
ctx.strokeStyle = colour;
ctx.beginPath();
ctx.moveTo(x + 0.5, y + 0.5 - size);
ctx.lineTo(x + 0.5, 0.5 + y);
ctx.lineTo(x + 0.5 + size, 0.5 + y);
ctx.moveTo(x + 0.5 - size, y + 0.5);
ctx.lineTo(x + 0.5, 0.5 + y);
ctx.lineTo(x + 0.5, 0.5 + y + size);
ctx.stroke();
ctx.closePath();
}
上記の関数は、画面に + を描画します。幅が奇数の線には 0.5 が必要です。このスレッドを参照してください。
いずれにせよ、各キャラクターに表示するアイテムの数によっては、時間がかかります。