表示するサンプルコードの言語を指定できます。
マップオブジェクト2D (MapObject2D)
概要
オブジェクト2Dクラスを拡張し、チップを複数持った上でそれらを全て一括で高速に描画できる2D描画オブジェクトです。 同じくテクスチャを描画するテクスチャオブジェクト2Dの場合は、描画するテクスチャの数だけそのインスタンスを生成する必要があります。しかし、テクスチャオブジェクト2DはOnUpdateメソッドを呼び出す分、その数が増えるとゲームに対して甚だしい負荷がかかります。そこで、このマップオブジェクト2Dはテクスチャと描画の情報をまとめたチップを複数持つことで、OnUpdateメソッドを一度しか呼び出さずに複数のテクスチャを描画することができ、ゲームに掛かる負荷を減らすことが出来ます。図に示すように大量の画像も高速に描画できます。
描画対象とするチップはAddChipにて追加、RemoveChipにて削除することが出来ます。
アクションゲームにおいて、マップチップや背景オブジェクトなどのゲーム中にてほぼ更新する必要はないが大量に描画する必要があるテクスチャを扱うのにこのマップオブジェクト2Dは適しています。逆にプレイヤーや敵キャラクターなど毎フレーム更新するオブジェクトを扱うには、テクスチャオブジェクト2Dが適しています。
チップの作成や設定については、チップの項を御覧ください。
主なメソッド
名称 | 説明 |
---|---|
AddChip | チップを描画対象として追加する (追加成功か否かが返り値) |
RemoveChip | チップを描画対象から削除する(削除成功か否かが返り値) |
Clear | 保持しているチップを全て破棄する。 |
主なプロパティ
名称 | 説明 |
---|---|
CenterPosition | 描画の際に適用する変換(拡大、回転、移動)の基準位置。(親から見た相対座標にて設定) |
DrawingPriority | 描画の優先順位 |
Chips | 保持しているチップ一覧を返す。 |
主なイベント
なし
使用方法
MapObject2Dクラスのサンプルです。
C++
#include <Base.h>
/**
@brief マップを表示するサンプル。
*/
int main()
{
// Altseedを初期化する
asd::Engine::Initialize(u"MapObject2D_Basic", 640, 480, asd::EngineOption());
{
//マップオブジェクトを生成する。
auto mapObject = std::make_shared<asd::MapObject2D>();
auto texture = asd::Engine::GetGraphics()->CreateTexture2D(u"Data/Texture/Chip1.png");
//マップオブジェクトに16*12=184個のチップを登録する。
for (int i = 0; i < 16; ++i)
{
for (int j = 0; j < 12; ++j)
{
//チップを生成する。
auto chip = std::make_shared<asd::Chip2D>();
//チップにテクスチャを設定する。
chip->SetTexture(texture);
//チップの描画先を指定する。
chip->SetPosition(asd::Vector2DF(i * 40, j * 40));
//マップオブジェクトにチップを追加する。
mapObject->AddChip(chip);
}
}
// マップオブジェクトのインスタンスをエンジンへ追加する。
asd::Engine::AddObject2D(mapObject);
}
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedを終了する。
asd::Engine::Terminate();
}
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// マップを表示するサンプル。
/// </summary>
class MapObject2D_Basic
{
public string Description
{
get { return "マップチップを並べて描画するサンプルです。"; }
}
public string Title
{
get { return "マップチップの描画"; }
}
public string ClassName
{
get { return "MapObject2D_Basic"; }
}
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("MapObject2D_Basic", 640, 480, new asd.EngineOption());
{
//マップオブジェクトを生成する。
var mapObject = new asd.MapObject2D();
var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Chip1.png");
//マップオブジェクトに16*12=184個のチップを登録する。
for (int i = 0; i < 16; ++i)
{
for (int j = 0; j < 12; ++j)
{
//チップを生成する。
var chip = new asd.Chip2D();
//チップにテクスチャを設定する。
chip.Texture = texture;
//チップの描画先を指定する。
chip.Position = new asd.Vector2DF(i * 40, j * 40);
//マップオブジェクトにチップを追加する。
mapObject.AddChip(chip);
}
}
//レイヤーにマップオブジェクトを追加する。
asd.Engine.AddObject2D(mapObject);
}
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}
Java
/**
* マップを表示するサンプル。
*/
class MapObject2D_Basic
{
public java.lang.String getDescription() {
return "マップチップを並べて描画するサンプルです。";
}
public java.lang.String getTitle() {
return "マップチップの描画";
}
public java.lang.String getClassName() {
return "MapObject2D_Basic";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("MapObject2D_Basic", 640, 480, new asd.EngineOption());
// マップオブジェクトを生成する。
asd.MapObject2D mapObject = new asd.MapObject2D();
asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Chip1.png");
// マップオブジェクトに16*12=184個のチップを登録する。
for(int i = 0; (i < 16); ++i)
{
for(int j = 0; (j < 12); ++j)
{
// チップを生成する。
asd.Chip2D chip = new asd.Chip2D();
// チップにテクスチャを設定する。
chip.setTexture(texture);
// チップの描画先を指定する。
chip.setPosition(new asd.Vector2DF((i * 40), (j * 40)));
// マップオブジェクトにチップを追加する。
mapObject.AddChip(chip);
}
}
// レイヤーにマップオブジェクトを追加する。
asd.Engine.AddObject2D(mapObject);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}