チップ2D (Chip2D)

概要

主にマップオブジェクト2Dクラス等で使用する、チップを定義したものです。
描画するテクスチャやそれに適用するオプションが設定可能です。

テクスチャについては、テクスチャの項を御覧ください。

主なメソッド

なし

主なプロパティ

名称 説明
Texture 描画するテクスチャ
TextureFilterType テクスチャ描画の際に適用されるフィルタの種類
AlphaBlendMode テクスチャ描画の際に適用されるアルファブレンドの種類
Color テクスチャ描画の際の合成色
TurnLR テクスチャ描画の左右反転フラグ
TurnUL テクスチャ描画の上下反転フラグ
Src テクスチャ上の描画する切り出し範囲
CenterPosition テクスチャに適用する変換(拡大、回転、移動)の基準位置(マップオブジェクトから見た相対座標にて設定)
Position このチップの属するマップオブジェクト2Dに対する相対的な位置
Angle このチップの属するマップオブジェクト2Dに対する相対的な回転角度
Scale このチップの属するマップオブジェクト2Dに対する相対的な拡大率

使用方法

Chip2DはMapObject2Dと必ず組み合わして使用します。
そのため、MapObject2Dクラスのサンプルを提示します。


  #include <ace.h>
  
  // MapObject2Dのサンプル。敷き詰められたタイルをカメラで撮影して画面に表示しています。
  int main()
  {
      // AC-Engineを初期化する。
      ace::Engine::Initialize(ace::ToAString("MapObject2D").c_str(), 640, 480, ace::EngineOption());
  
      // シーンを生成する
      auto scene = std::make_shared<ace::Scene>();
  
      // レイヤーを生成する
      auto layer = std::make_shared<ace::Layer2D>();
  
      // シーンにレイヤーを追加する
      scene->AddLayer(layer);
  
      // シーンを切り替える
      ace::Engine::ChangeScene(scene);
  
      // カメラを設定する。
      auto camera = std::make_shared<ace::CameraObject2D>();
  
      camera->SetSrc(ace::RectI(0, 0, 640, 480));
      camera->SetDst(ace::RectI(0, 0, 640, 480));
  
      {
          // マップオブジェクトを生成する。
          auto mapObject = std::make_shared<ace::MapObject2D>();
  
          auto texture = ace::Engine::GetGraphics()->CreateTexture2D(ace::ToAString("Data/Texture/Sample2.png").c_str());
  
          // マップオブジェクトに50*50=2500個のチップを登録する。
          for (int i = 0; i < 50; ++i)
          {
              for (int j = 0; j < 50; ++j)
              {
                  // チップを生成する。
                  auto chip = std::make_shared<ace::Chip2D>();
  
                  // チップにテクスチャを設定する。
                  chip->SetTexture(texture);
  
                  // チップの描画先を指定する。
                  chip->SetPosition(ace::Vector2DF(i * 40 - 1000, j * 40 - 1000));
  
                  // マップオブジェクトにチップを追加する。
                  mapObject->AddChip(chip);
              }
          }
  
          // レイヤーにマップオブジェクトを追加する。
          layer->AddObject(mapObject);
  
          // レイヤーにカメラオブジェクトを追加する。
          layer->AddObject(camera);
      }
  
      // AC-Engineのウインドウが閉じられていないか確認する。
      while (ace::Engine::DoEvents())
      {
          // カメラを移動させる
          auto pos = camera->GetSrc();
          pos.X += 1;
          pos.Y += 1;
          pos.X %= 1000;
          pos.Y %= 1000;
          camera->SetSrc(pos);
  
          // AC-Engineを更新する。
          ace::Engine::Update();
      }
  
      // AC-Engineの終了処理をする。
      ace::Engine::Terminate();
  
      return 0;
  }