「プラグイン開発資料/建築物定義の例」の編集履歴(バックアップ)一覧はこちら

プラグイン開発資料/建築物定義の例」(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)

表示オプション

横に並べて表示:
変化行の前後のみ表示: