「プラグイン開発資料/建築物定義の例」の編集履歴(バックアップ)一覧はこちら
「プラグイン開発資料/建築物定義の例」(2010/04/19 (月) 18:17:12) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#right(){最終更新日時:&lastmod()}
#hr(height=4,color=#1E90FF)
&small(){&topicpath()}
#contents()
#hr(height=4,color=#1E90FF)
*建築物定義の例
各種の建築物(駅舎、建物、アクセサリなど)の定義のうち、画像の表示に関する部分は同じ書式を使用します。
例えば、駅舎と建物では、駅舎に特有の部分と建物に特有の部分がありますが、画像部分の定義は共通です。
以下に、建築物の画像に関する定義の例を示します。
#hr(height=2,color=#1E90FF)
**画像
建築物に使用する画像については、[[建物を作る>プラグイン開発資料/建物を作る]]、[[画像の形式>プラグイン開発資料/画像の形式]]を参照してください。
画像の大きさは、建物の[[ボクセル境界>プラグイン開発資料/ボクセル境界]]に合うサイズにするのが基本です。
この例では、以下のような画像から建築物を作成することにします。
#image(StructureSample1.PNG)
この画像は、2×4(4×2)ボクセルの面積を持つ建築物を、向きを変えて2つ並べたものです。
#image(StructureSample2.PNG)
上の図のように、ボクセル上に配置されてます。
***建築物の基準となるボクセル
建築物は、その左上端のボクセルを基準に配置/管理されます。先の画像の、黄色く色が付いているボクセルが、建築物の基準となるボクセルです。
#hr(height=2,color=#1E90FF)
**左側の建築物
***画像のサイズ
この画像のサイズは、以下のようになっています。
#image(StructureSample3.PNG)
左側の建築物は、画像の上端から、建築物の基準となる左端のボクセルの上端まで、40ピクセルあります。
左側の建築物は、画像の左端と上端から始まっています。
建築物の最も高い部分の高さは、ボクセル上端から32ピクセルです。
***建築物の定義
建築物一般の定義は、
#blockquote(){ <size>横幅,縦幅</size>
<height>高さ</height>
<sprite>
スプライト定義
</sprite>
}
です。
この建築物の場合、横幅は、基準ボクセルから右上方向のボクセル数ですから 2 (ボクセル)、縦幅は、基準ボクセルから右下方向のボクセル数ですので、4 (ボクセル) です。
高さは、この建築物の高さを指定します。単位は、ゲーム中の高さで、高さ1 は、画像の16ピクセルに相当します。
よって、この建築物の高さは、2 となります。
スプライト定義は、この画像をどのようにスプライトとして表示するかを定義します。
詳しくは、スプライトタグを参照してください。
ここでは、左側の建築物全体を表示しますので、originは 0,0 、offset は 40 とします。
ここでの指定は、スプライトの開始点です。スプライトの範囲は、建築物の大きさから自動的に決定されます。
必要な画像のサイズは以下の式で計算できます。
幅 = originのX座標 + (ボクセルサイズX + ボクセルサイズY) * 16
高さ = originのY座標 + offset + (1 + ボクセルサイズY) * 8
※用意した画像ファイルのサイズがスプライトの範囲に満たないと、ゲーム中で正しく表示されません。
以上の情報より、
#blockquote(){ <size>2,4</size>
<height>2</height>
<sprite origin="0,0" offset="40">
<picture src="画像ファイル名" />
</sprite>
}
と記述すればよいことがわかります。
#hr(height=2,color=#1E90FF)
**右側の建築物
右側の建築物も、左側のものと同様に定義します。
#image(StructureSample3.PNG)
上記の図より、右側の建築物は、画像の上端から、建築物の基準となる左端のボクセルの上端まで、56ピクセルあります。
右側の建築物は、画像の左端から112ピクセルの位置と、画像の上端から始まっています。 建築物の最も高い部分の高さは、左側の建築物と同じく、ボクセル上端から32ピクセルです。
横幅は、横幅は、基準ボクセルから右上方向のボクセル数ですから 4 (ボクセル)、縦幅は、基準ボクセルから右下方向のボクセル数ですので、2 (ボクセル) です。
高さは、左側のものと同じ、32ピクセルですから、2 となります。
スプライト定義は、右側の建築物全体を表示しますので、originは 112,0 、offset は 56 とします。 以上の情報より、
#blockquote(){ <size>4,2</size>
<height>2</height>
<sprite origin="112,0" offset="56">
<picture src="画像ファイル名" />
</sprite>
}
と記述すればよいことがわかります。
#hr(height=2,color=#1E90FF)
**実際の定義
上記の建築物2つを追加するプラグインを作成します。
この場合、2つの建物で同じ画像を使用しますので、[[ピクチャコントリビューション>プラグイン開発資料/コントリビューション一覧/PictureContrib]]を使用して、1つの画像を参照するようにします。
#bgcolor(pink){この例は古いプラグインを参考にしています。現在ではcommercialコントリビューションは作ってはいけません}
***plugin.xml
#blockquote(){ <?xml version="1.0" encoding="Shift_JIS"?>
<plug-in>
<title>建築物定義の例プラグイン</title>
<author>名無しさん</author>
<homepage>http://http://www.kohsuke.org/freetrain/wiki/pukiwiki.php</homepage>
<contribution type="picture" id="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}">
<picture src="sample_structure.bmp" />
</contribution>
<contribution type="commercial" id="{1EE9BBF8-9E2E-4c75-BB9A-0CB93B7FFAC1}">
<group>建築物定義の例</group>
<name>左側の建物</name>
<price>100</price>
<size>2,4</size>
<height>2</height>
<sprite origin="0,0" offset="40">
<picture ref="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}" />
</sprite>
<population>
<class name="freetrain.contributions.population.OfficePopulation ">
<base>100</base>
</population>
</contribution>
<contribution type="commercial" id="{A4310773-8164-4edc-BAA6-F8325A8430D9}">
<group>建築物定義の例</group>
<name>右側の建物</name>
<price>100</price>
<size>4,2</size>
<height>2</height>
<sprite origin="112,0" offset="56">
<picture ref="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}" />
</sprite>
<population>
<class name="freetrain.contributions.population.OfficePopulation ">
<base>100</base>
</population>
</contribution>
</plug-in>
}
注:[[GenericStructureコントリビューション>プラグイン開発資料/コントリビューション一覧/GenericStructureContrib]]では、左右対称な大きさのものはopposite属性を指定できます。
***他にも……
同じ画像から、駅舎を追加することもできます。
#blockquote() { <contribution type="station" id="{A35113CD-F0AD-48ba-8224-B21DFCE44DE9}">
<group>建築物定義の例</group>
<name>左側の建物の駅舎</name>
<price>100</price>
<size>2,4</size>
<height>2</height>
<operationCost>100</operationCost>
<sprite origin="0,0" offset="40">
<picture ref="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}" />
</sprite>
</contribution>
}
#hr(height=2,color=#1E90FF)
#right(){最終更新日時:&lastmod()}
#hr(height=4,color=#1E90FF)
&small(){&topicpath()}
#contents()
#hr(height=4,color=#1E90FF)
*建築物定義の例
各種の建築物(駅舎、建物、アクセサリなど)の定義のうち、画像の表示に関する部分は同じ書式を使用します。
例えば、駅舎と建物では、駅舎に特有の部分と建物に特有の部分がありますが、画像部分の定義は共通です。
以下に、建築物の画像に関する定義の例を示します。
#hr(height=2,color=#1E90FF)
**画像
建築物に使用する画像については、[[建物を作る>プラグイン開発資料/建物を作る]]、[[画像の形式>プラグイン開発資料/画像の形式]]を参照してください。
画像の大きさは、建物の[[ボクセル境界>プラグイン開発資料/ボクセル境界]]に合うサイズにするのが基本です。
この例では、以下のような画像から建築物を作成することにします。
#image(StructureSample1.PNG)
この画像は、2×4(4×2)ボクセルの面積を持つ建築物を、向きを変えて2つ並べたものです。
#image(StructureSample2.PNG)
上の図のように、ボクセル上に配置されてます。
***建築物の基準となるボクセル
建築物は、その左上端のボクセルを基準に配置/管理されます。先の画像の、黄色く色が付いているボクセルが、建築物の基準となるボクセルです。
#hr(height=2,color=#1E90FF)
**左側の建築物
***画像のサイズ
この画像のサイズは、以下のようになっています。
#image(StructureSample3.PNG)
左側の建築物は、画像の上端から、建築物の基準となる左端のボクセルの上端まで、40ピクセルあります。
左側の建築物は、画像の左端と上端から始まっています。
建築物の最も高い部分の高さは、ボクセル上端から32ピクセルです。
***建築物の定義
建築物一般の定義は、
#blockquote(){ <size>横幅,縦幅</size>
<height>高さ</height>
<sprite>
スプライト定義
</sprite>
}
です。
この建築物の場合、横幅は、基準ボクセルから右上方向のボクセル数ですから 2 (ボクセル)、縦幅は、基準ボクセルから右下方向のボクセル数ですので、4 (ボクセル) です。
高さは、この建築物の高さを指定します。単位は、ゲーム中の高さで、高さ1 は、画像の16ピクセルに相当します。
よって、この建築物の高さは、2 となります。
スプライト定義は、この画像をどのようにスプライトとして表示するかを定義します。
詳しくは、スプライトタグを参照してください。
ここでは、左側の建築物全体を表示しますので、originは 0,0 、offset は 40 とします。
ここでの指定は、スプライトの開始点です。スプライトの範囲は、建築物の大きさから自動的に決定されます。
必要な画像のサイズは以下の式で計算できます。
幅 = originのX座標 + (ボクセルサイズX + ボクセルサイズY) * 16
高さ = originのY座標 + offset + (1 + ボクセルサイズY) * 8
※用意した画像ファイルのサイズがスプライトの範囲に満たないと、ゲーム中で正しく表示されません。
以上の情報より、
#blockquote(){ <size>2,4</size>
<height>2</height>
<sprite origin="0,0" offset="40">
<picture src="画像ファイル名" />
</sprite>
}
と記述すればよいことがわかります。
#hr(height=2,color=#1E90FF)
**右側の建築物
右側の建築物も、左側のものと同様に定義します。
#image(StructureSample3.PNG)
上記の図より、右側の建築物は、画像の上端から、建築物の基準となる左端のボクセルの上端まで、56ピクセルあります。
右側の建築物は、画像の左端から112ピクセルの位置と、画像の上端から始まっています。 建築物の最も高い部分の高さは、左側の建築物と同じく、ボクセル上端から32ピクセルです。
横幅は、横幅は、基準ボクセルから右上方向のボクセル数ですから 4 (ボクセル)、縦幅は、基準ボクセルから右下方向のボクセル数ですので、2 (ボクセル) です。
高さは、左側のものと同じ、32ピクセルですから、2 となります。
スプライト定義は、右側の建築物全体を表示しますので、originは 112,0 、offset は 56 とします。 以上の情報より、
#blockquote(){ <size>4,2</size>
<height>2</height>
<sprite origin="112,0" offset="56">
<picture src="画像ファイル名" />
</sprite>
}
と記述すればよいことがわかります。
#hr(height=2,color=#1E90FF)
**実際の定義
上記の建築物2つを追加するプラグインを作成します。
この場合、2つの建物で同じ画像を使用しますので、[[ピクチャコントリビューション>プラグイン開発資料/コントリビューション一覧/PictureContrib]]を使用して、1つの画像を参照するようにします。
&bgcolor(pink){この例は古いプラグインを参考にしています。現在ではcommercialコントリビューションは作ってはいけません}
***plugin.xml
#blockquote(){ <?xml version="1.0" encoding="Shift_JIS"?>
<plug-in>
<title>建築物定義の例プラグイン</title>
<author>名無しさん</author>
<homepage>http://http://www.kohsuke.org/freetrain/wiki/pukiwiki.php</homepage>
<contribution type="picture" id="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}">
<picture src="sample_structure.bmp" />
</contribution>
<contribution type="commercial" id="{1EE9BBF8-9E2E-4c75-BB9A-0CB93B7FFAC1}">
<group>建築物定義の例</group>
<name>左側の建物</name>
<price>100</price>
<size>2,4</size>
<height>2</height>
<sprite origin="0,0" offset="40">
<picture ref="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}" />
</sprite>
<population>
<class name="freetrain.contributions.population.OfficePopulation ">
<base>100</base>
</population>
</contribution>
<contribution type="commercial" id="{A4310773-8164-4edc-BAA6-F8325A8430D9}">
<group>建築物定義の例</group>
<name>右側の建物</name>
<price>100</price>
<size>4,2</size>
<height>2</height>
<sprite origin="112,0" offset="56">
<picture ref="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}" />
</sprite>
<population>
<class name="freetrain.contributions.population.OfficePopulation ">
<base>100</base>
</population>
</contribution>
</plug-in>
}
注:[[GenericStructureコントリビューション>プラグイン開発資料/コントリビューション一覧/GenericStructureContrib]]では、左右対称な大きさのものはopposite属性を指定できます。
***他にも……
同じ画像から、駅舎を追加することもできます。
#blockquote() { <contribution type="station" id="{A35113CD-F0AD-48ba-8224-B21DFCE44DE9}">
<group>建築物定義の例</group>
<name>左側の建物の駅舎</name>
<price>100</price>
<size>2,4</size>
<height>2</height>
<operationCost>100</operationCost>
<sprite origin="0,0" offset="40">
<picture ref="{1EBA4A26-C35D-4209-9C71-AA9B1237C14C}" />
</sprite>
</contribution>
}
#hr(height=2,color=#1E90FF)