表示するサンプルコードの言語を指定できます。
ポーズ
Altseedでは、Layerの機能を使用して簡単にポーズを実装することができます。
基本
C++
#include <Altseed.h>
// ポーズのサンプル。
/**
@brief ポーズを実行するレイヤー
*/
class PauseLayer
: public asd::Layer2D
{
void OnAdded() override
{
// ポーズ以外のレイヤーの更新を停止する。
for(auto& layer : GetScene()->GetLayers())
{
if (layer.get() != this) layer->SetIsUpdated(false);
}
// ポーズを表示するオブジェクトを生成する。
auto obj = std::make_shared<asd::TextureObject2D>();
obj->SetTexture(asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Pause1.png").c_str()));
AddObject(obj);
}
void OnUpdated() override
{
// スペースが押されたら、他のレイヤーの更新を再開して、ポーズレイヤーを破棄する。
if (asd::Engine::GetKeyboard()->GetKeyState(asd::Keys::Space) == asd::ButtonState::Push)
{
for (auto& layer : GetScene()->GetLayers())
{
layer->SetIsUpdated(true);
}
Dispose();
}
}
};
/**
@brief ゲームの挙動を描画するレイヤー
*/
class MainLayer
: public asd::Layer2D
{
std::shared_ptr<asd::TextureObject2D> obj = nullptr;
public:
MainLayer()
{
// 画像を表示するオブジェクトを生成する。
obj = std::make_shared<asd::TextureObject2D>();
obj->SetTexture(asd::Engine::GetGraphics()->CreateTexture2D(u"Data/Texture/Picture1.png"));
obj->SetPosition(asd::Vector2DF(320, 240));
obj->SetCenterPosition(asd::Vector2DF(obj->GetTexture()->GetSize().X / 2, obj->GetTexture()->GetSize().Y / 2));
AddObject(obj);
}
void OnUpdated() override
{
// スペースが押されたら、ポーズレイヤーを追加する。
if (asd::Engine::GetKeyboard()->GetKeyState(asd::Keys::Space) == asd::ButtonState::Push)
{
auto pauseLayer = std::make_shared<PauseLayer>();
GetScene()->AddLayer(pauseLayer);
}
// 画像を回転させる。
obj->SetAngle(obj->GetAngle() + 1.0f);
}
};
int main()
{
// Altseedを初期化する。
asd::Engine::Initialize(u"Pause_Basic", 640, 480, asd::EngineOption());
// シーンを生成する
auto scene = std::make_shared<asd::Scene>();
// レイヤーを生成する
auto layer = std::make_shared<MainLayer>();
// シーンにレイヤーを追加する
scene->AddLayer(layer);
// シーンを切り替える
asd::Engine::ChangeScene(scene);
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedの終了処理をする。
asd::Engine::Terminate();
return 0;
}
C#
/// <summary>
/// ポーズを実行するレイヤー
/// </summary>
class Pause_Basic_PauseLayer : asd.Layer2D
{
protected override void OnAdded()
{
// ポーズ以外のレイヤーの更新を停止する。
foreach(var layer in Scene.Layers)
{
if(layer != this) layer.IsUpdated = false;
}
// ポーズを表示するオブジェクトを生成する。
var obj = new asd.TextureObject2D();
obj.Texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Pause1.png");
AddObject(obj);
}
protected override void OnUpdated()
{
// スペースが押されたら、他のレイヤーの更新を再開して、ポーズレイヤーを破棄する。
if(asd.Engine.Keyboard.GetKeyState(asd.Keys.Space) == asd.ButtonState.Push)
{
foreach(var layer in Scene.Layers)
{
layer.IsUpdated = true;
}
Dispose();
}
}
}
/// <summary>
/// ゲームの挙動を描画するレイヤー
/// </summary>
class Pause_Basic_MainLayer : asd.Layer2D
{
asd.TextureObject2D obj = null;
public Pause_Basic_MainLayer()
{
// 画像を表示するオブジェクトを生成する。
obj = new asd.TextureObject2D();
obj.Texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");
obj.Position = new asd.Vector2DF(320, 240);
obj.CenterPosition = new asd.Vector2DF(obj.Texture.Size.X / 2, obj.Texture.Size.Y / 2);
AddObject(obj);
}
protected override void OnUpdated()
{
// スペースが押されたら、ポーズレイヤーを追加する。
if(asd.Engine.Keyboard.GetKeyState(asd.Keys.Space) == asd.ButtonState.Push)
{
var pauseLayer = new Pause_Basic_PauseLayer();
Scene.AddLayer(pauseLayer);
}
// 画像を回転させる。
obj.Angle += 1.0f;
}
}
/// <summary>
/// ポーズのサンプル。
/// </summary>
class Pause_Basic
{
public string Description
{
get { return "レイヤーの処理を一時停止するサンプルです。"; }
}
public string Title
{
get { return "ポーズ"; }
}
public string ClassName
{
get { return "Pause_Basic"; }
}
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("Pause_Basic", 640, 480, new asd.EngineOption());
// シーンを生成する
var scene = new asd.Scene();
// ゲームの挙動を描画するレイヤーを生成する
var layer = new Pause_Basic_MainLayer();
// シーンにレイヤーを追加する
scene.AddLayer(layer);
// シーンを切り替える
asd.Engine.ChangeScene(scene);
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}
Java
/**
* ポーズのサンプル。
*/
class Pause_Basic
{
public java.lang.String getDescription() {
return "レイヤーの処理を一時停止するサンプルです。";
}
public java.lang.String getTitle() {
return "ポーズ";
}
public java.lang.String getClassName() {
return "Pause_Basic";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("Pause_Basic", 640, 480, new asd.EngineOption());
// シーンを生成する
asd.Scene scene = new asd.Scene();
// ゲームの挙動を描画するレイヤーを生成する
Pause_Basic_MainLayer layer = new Pause_Basic_MainLayer();
// シーンにレイヤーを追加する
scene.AddLayer(layer);
// シーンを切り替える
asd.Engine.ChangeScene(scene);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}