表示するサンプルコードの言語を指定できます。
シーンとレイヤー
Altseedには、シーンとレイヤーというオブジェクトを管理する機能が存在します。 シーンとレイヤーでは、今までのように直接Engineにオブジェクトを追加した場合とできることは変わりませんが、 他の機能と組み合わせることで、シーン遷移やポストエフェクト等を簡単に実装できるようになります。
これ以降の機能紹介ではシーンとレイヤーの知識が必要となります。
詳細はこちらを御覧ください。
シーンとレイヤーの基本
C++
#include <Altseed.h>
// シーンとレイヤーを手動で設定するサンプル。
int main()
{
// Altseedを初期化する。
asd::Engine::Initialize(asd::ToAString("SceneAndLayer_Basic").c_str(), 640, 480, asd::EngineOption());
// 画像を読み込む。
auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
// シーンクラスのインスタンスを生成する。
auto scene = std::make_shared<asd::Scene>();
// レイヤークラスのインスタンスを生成する。
auto layer = std::make_shared<asd::Layer2D>();
// 画像描画オブジェクトのインスタンスを生成する。
auto obj = std::make_shared<asd::TextureObject2D>();
// オブジェクトの位置とテクスチャを設定する。
obj->SetPosition(asd::Vector2DF(50, 50));
obj->SetTexture(texture);
// 描画するシーンを指定する。
asd::Engine::ChangeScene(scene);
// 描画するレイヤーをシーンに追加する。
scene->AddLayer(layer);
// 描画するオブジェクトをレイヤーに追加する。
layer->AddObject(obj);
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedを終了する。
asd::Engine::Terminate();
}
C#
class SceneAndLayer_Basic
{
public string Description
{
get { return "シーンとレイヤーを手動で生成して操作するサンプル。"; }
}
public string Title
{
get { return "シーンとレイヤーの基本"; }
}
public string ClassName
{
get { return "SceneAndLayer_Basic"; }
}
// シーンとレイヤーを手動で生成する。
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("SceneAndLayer_Basic", 640, 480, new asd.EngineOption());
// 画像を読み込む。
var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");
// シーンクラスのインスタンスを生成する。
var scene = new asd.Scene();
// レイヤークラスのインスタンスを生成する。
var layer = new asd.Layer2D();
//画像描画オブジェクトのインスタンスを生成する。
var obj = new asd.TextureObject2D();
// オブジェクトの位置とテクスチャを設定する。
obj.Position = new asd.Vector2DF(50, 50);
obj.Texture = texture;
// 描画するシーンを指定する。
asd.Engine.ChangeScene(scene);
// 描画するレイヤーをシーンに追加する。
scene.AddLayer(layer);
// 描画するオブジェクトをレイヤーに追加する。
layer.AddObject(obj);
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
Java
class SceneAndLayer_Basic
{
public java.lang.String getDescription() {
return "シーンとレイヤーを手動で生成して操作するサンプル。";
}
public java.lang.String getTitle() {
return "シーンとレイヤーの基本";
}
public java.lang.String getClassName() {
return "SceneAndLayer_Basic";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("SceneAndLayer_Basic", 640, 480, new asd.EngineOption());
// 画像を読み込む。
asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png");
// シーンクラスのインスタンスを生成する。
asd.Scene scene = new asd.Scene();
// レイヤークラスのインスタンスを生成する。
asd.Layer2D layer = new asd.Layer2D();
// 画像描画オブジェクトのインスタンスを生成する。
asd.TextureObject2D obj = new asd.TextureObject2D();
// オブジェクトの位置とテクスチャを設定する。
obj.setPosition(new asd.Vector2DF(50, 50));
obj.setTexture(texture);
// 描画するシーンを指定する。
asd.Engine.ChangeScene(scene);
// 描画するレイヤーをシーンに追加する。
scene.AddLayer(layer);
// 描画するオブジェクトをレイヤーに追加する。
layer.AddObject(obj);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
レイヤーのカスタマイズ
C++
#include <Altseed.h>
// このサンプルで使用するカスタマイズしたレイヤー。
class SceneAndLayer_SampleLayer : public asd::Layer2D
{
private:
// フレーム数を数えるカウンタ。
int count;
public:
SceneAndLayer_SampleLayer()
{
// カウンタを初期化
count = 0;
}
// 毎フレーム実行される関数をオーバーライド。
void OnUpdated()
{
// フレーム数を数える
count++;
// 60フレームごとに
if (count % 60 == 0)
{
// オブジェクトを生成
auto obj = std::make_shared<asd::TextureObject2D>();
// オブジェクトのテクスチャを設定
auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
obj->SetTexture(texture);
// オブジェクトの位置を設定
auto p = count / 60 * 20;
obj->SetPosition(asd::Vector2DF(p, p));
// オブジェクトをこのレイヤーに追加
AddObject(obj);
}
}
};
// Layer2Dを継承することでカスタマイズしたレイヤーを作り、一定時間ごとにオブジェクトを追加するサンプル。
int main()
{
// Altseedを初期化する。
asd::Engine::Initialize(asd::ToAString("SceneAndLayer_CustomLayer").c_str(), 640, 480, asd::EngineOption());
// シーンクラスのインスタンスを生成する。
auto scene = std::make_shared<asd::Scene>();
// 描画するシーンを指定する。
asd::Engine::ChangeScene(scene);
// レイヤークラスのインスタンスを生成する。
auto layer = std::make_shared<SceneAndLayer_SampleLayer>();
// 描画するレイヤーをシーンに追加する。
scene->AddLayer(layer);
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedを終了する。
asd::Engine::Terminate();
}
C#
// このサンプルで使用するカスタマイズしたレイヤー。
class SceneAndLayer_SampleLayer : asd.Layer2D
{
// フレーム数を数えるカウンタ。
private int count;
// コンストラクタ
public SceneAndLayer_SampleLayer()
{
// カウンタを初期化
count = 0;
}
// 毎フレーム実行される関数をオーバーライド。
protected override void OnUpdated()
{
// フレーム数を数える
count++;
// 60フレームごとに
if(count % 60 == 0)
{
// オブジェクトを生成
var obj = new asd.TextureObject2D();
// オブジェクトのテクスチャを設定
obj.Texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");
// オブジェクトの位置を設定
var p = count / 60 * 20;
obj.Position = new asd.Vector2DF(p, p);
// オブジェクトをこのレイヤーに追加
AddObject(obj);
}
}
}
class SceneAndLayer_CustomLayer
{
public string Description
{
get { return "Layer2Dクラスを継承して、ふるまいをカスタマイズするサンプル。"; }
}
public string Title
{
get { return "レイヤーのカスタマイズ"; }
}
public string ClassName
{
get { return "SceneAndLayer_CustomLayer"; }
}
// Layer2Dを継承することでカスタマイズしたレイヤーを作り、一定時間ごとにオブジェクトを追加するサンプル。
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("SceneAndLayer_CustomLayer", 640, 480, new asd.EngineOption());
// シーンクラスのインスタンスを生成する。
var scene = new asd.Scene();
// 描画するシーンを指定する。
asd.Engine.ChangeScene(scene);
// レイヤークラスのインスタンスを生成する。
var layer = new SceneAndLayer_SampleLayer();
// 描画するレイヤーをシーンに追加する。
scene.AddLayer(layer);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
Java
class SceneAndLayer_CustomLayer
{
public java.lang.String getDescription() {
return "Layer2Dクラスを継承して、ふるまいをカスタマイズするサンプル。";
}
public java.lang.String getTitle() {
return "レイヤーのカスタマイズ";
}
public java.lang.String getClassName() {
return "SceneAndLayer_CustomLayer";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("SceneAndLayer_CustomLayer", 640, 480, new asd.EngineOption());
// シーンクラスのインスタンスを生成する。
asd.Scene scene = new asd.Scene();
// 描画するシーンを指定する。
asd.Engine.ChangeScene(scene);
// レイヤークラスのインスタンスを生成する。
SceneAndLayer_SampleLayer layer = new SceneAndLayer_SampleLayer();
// 描画するレイヤーをシーンに追加する。
scene.AddLayer(layer);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
class SceneAndLayer_SampleLayer extends asd.Layer2D
{
private int count;
protected void OnUpdated()
{
// フレーム数を数える
count++;
// 60フレームごとに
if(((count % 60 ) == 0))
{
// オブジェクトを生成
asd.TextureObject2D obj = new asd.TextureObject2D();
// オブジェクトのテクスチャを設定
obj.setTexture(asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png"));
// オブジェクトの位置を設定
int p = ((count / 60 ) * 20);
obj.setPosition(new asd.Vector2DF(p, p));
// オブジェクトをこのレイヤーに追加
AddObject(obj);
}
}
public SceneAndLayer_SampleLayer()
{
// カウンタを初期化
count = 0;
}
}
シーンのカスタマイズ
C++
#include <Altseed.h>
// このサンプルで使用するカスタマイズされたシーン。
class SceneAndLayer_SampleScene : public asd::Scene
{
private:
// フレーム数を数えるカウンタ。
int count;
public:
SceneAndLayer_SampleScene()
{
// カウンタを初期化
count = 0;
}
void OnUpdated()
{
// フレーム数を数える。
count++;
// 60フレームごとにレイヤーを追加する処理
if (count % 60 == 0)
{
// レイヤークラスのインスタンスを生成する。
auto layer = std::make_shared<asd::Layer2D>();
// 描画するレイヤーをシーンに追加する。
AddLayer(layer);
// オブジェクトを生成する。
auto obj = std::make_shared<asd::TextureObject2D>();
// オブジェクトに画像を設定する。
auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
obj->SetTexture(texture);
// オブジェクトの位置を設定する。
auto p = count / 60 * 20;
obj->SetPosition(asd::Vector2DF(p, p));
// オブジェクトをレイヤーに追加する。
layer->AddObject(obj);
}
}
};
// Sceneクラスを継承することでカスタマイズされたシーンを作り、一定時間ごとにレイヤーを追加していくサンプル。
int main()
{
// Altseedを初期化する。
asd::Engine::Initialize(asd::ToAString("SceneAndLayer_CustomScene").c_str(), 640, 480, asd::EngineOption());
// シーンクラスのインスタンスを生成する。
auto scene = std::make_shared<SceneAndLayer_SampleScene>();
// 描画するシーンを指定する。
asd::Engine::ChangeScene(scene);
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedを終了する。
asd::Engine::Terminate();
}
C#
// このサンプルで使用するカスタマイズされたシーン。
class SceneAndLayer_SampleScene : asd.Scene
{
// フレーム数を数えるカウンタ。
private int count;
public SceneAndLayer_SampleScene()
{
// カウンタを初期化
count = 0;
}
protected override void OnUpdated()
{
// フレーム数を数える。
count++;
// 60フレームごとにレイヤーを追加する処理
if(count % 60 == 0)
{
// レイヤークラスのインスタンスを生成する。
var layer = new asd.Layer2D();
// 描画するレイヤーをシーンに追加する。
AddLayer(layer);
// オブジェクトを生成する。
var obj = new asd.TextureObject2D();
// オブジェクトに画像を設定する。
obj.Texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");
// オブジェクトの位置を設定する。
var p = count / 60 * 20;
obj.Position = new asd.Vector2DF(p, p);
// オブジェクトをレイヤーに追加する。
layer.AddObject(obj);
}
}
}
class SceneAndLayer_CustomScene
{
public string Description
{
get { return "Sceneクラスを継承して、ふるまいをカスタマイズするサンプル。"; }
}
public string Title
{
get { return "シーンのカスタマイズ"; }
}
public string ClassName
{
get { return "SceneAndLayer_CustomScene"; }
}
// Sceneクラスを継承することでカスタマイズされたシーンを作り、一定時間ごとにレイヤーを追加していくサンプル。
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("SceneAndLayer_CustomScene", 640, 480, new asd.EngineOption());
// シーンクラスのインスタンスを生成する。
var scene = new SceneAndLayer_SampleScene();
// 描画するシーンを指定する。
asd.Engine.ChangeScene(scene);
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
Java
class SceneAndLayer_CustomScene
{
public java.lang.String getDescription() {
return "Sceneクラスを継承して、ふるまいをカスタマイズするサンプル。";
}
public java.lang.String getTitle() {
return "シーンのカスタマイズ";
}
public java.lang.String getClassName() {
return "SceneAndLayer_CustomScene";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("SceneAndLayer_CustomScene", 640, 480, new asd.EngineOption());
// シーンクラスのインスタンスを生成する。
SceneAndLayer_SampleScene scene = new SceneAndLayer_SampleScene();
// 描画するシーンを指定する。
asd.Engine.ChangeScene(scene);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
class SceneAndLayer_SampleScene extends asd.Scene
{
private int count;
protected void OnUpdated()
{
// フレーム数を数える。
count++;
// 60フレームごとにレイヤーを追加する処理
if(((count % 60 ) == 0))
{
// レイヤークラスのインスタンスを生成する。
asd.Layer2D layer = new asd.Layer2D();
// 描画するレイヤーをシーンに追加する。
AddLayer(layer);
// オブジェクトを生成する。
asd.TextureObject2D obj = new asd.TextureObject2D();
// オブジェクトに画像を設定する。
obj.setTexture(asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png"));
// オブジェクトの位置を設定する。
int p = ((count / 60 ) * 20);
obj.setPosition(new asd.Vector2DF(p, p));
// オブジェクトをレイヤーに追加する。
layer.AddObject(obj);
}
}
public SceneAndLayer_SampleScene()
{
// カウンタを初期化
count = 0;
}
}