表示するサンプルコードの言語を指定できます。
オブジェクトの挙動を部品化する
Object2DComponentクラスの派生クラスを作ることで、オブジェクトの挙動を部品化することができます。 複数の種類のオブジェクトが共通して持つ挙動などをコンポーネントにして、それをオブジェクトに追加することで部品化を実現します。
回転するコンポーネント
C++
#include <Altseed.h>
// Object2DComponentを用いて、オブジェクトのパラメーターを変更するサンプル。
// オブジェクトを回転させるコンポーネント
class Object2DComponent_Custom_RotatingComponent : public asd::Object2DComponent
{
public:
void OnUpdate()
{
// 毎フレーム、オブジェクトの角度を回転させる
GetOwner()->SetAngle(GetOwner()->GetAngle() + 2);
}
};
int main()
{
// Altseedを初期化する。
asd::Engine::Initialize(asd::ToAString("Object2DComponent").c_str(), 640, 480, asd::EngineOption());
// オブジェクトを生成する。
auto obj = std::make_shared<asd::TextureObject2D>();
// 画像を読み込む。
auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
// オブジェクトに画像を設定する。
obj->SetTexture(texture);
// オブジェクトの位置を設定する。
obj->SetPosition(asd::Vector2DF(320, 240));
// エンジンにオブジェクトを追加する。
asd::Engine::AddObject2D(obj);
// 回転コンポーネントを生成する。
auto component = std::make_shared<Object2DComponent_Custom_RotatingComponent>();
// オブジェクトに回転コンポーネントをコンポーネント名"Rotate"で追加する。
obj->AddComponent(component, asd::ToAString("Rotate"));
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
if (asd::Engine::GetKeyboard()->GetKeyState(asd::Keys::P) == asd::ButtonState::Push)
{
asd::Engine::TakeScreenshot(asd::ToAString("Object2DComponent.jpg").c_str());
}
}
//Altseedの終了処理をする。
asd::Engine::Terminate();
return 0;
}
C#
// オブジェクトを回転させるコンポーネント。
class Object2DComponent_Custom_RotateComponent : asd.Object2DComponent
{
protected override void OnUpdate()
{
// 毎フレーム、オブジェクトの角度を回転させる
Owner.Angle += 2;
}
}
class Object2DComponent_Custom
{
public string Description
{
get { return ""; }
}
public string Title
{
get { return ""; }
}
public string ClassName
{
get { return "Object2DComponent_Custom"; }
}
// Object2DComponentを用いて、オブジェクトのパラメーターを変更するサンプル。
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("Object2DComponent_Custom", 640, 480, new asd.EngineOption());
// オブジェクトを生成する。
var obj = new asd.TextureObject2D();
// 画像を読み込む。
var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");
// オブジェクトに画像を設定する。
obj.Texture = texture;
// オブジェクトの位置を設定する。
obj.Position = new asd.Vector2DF(320, 240);
// エンジンにオブジェクトを追加する。
asd.Engine.AddObject2D(obj);
// 回転コンポーネントを生成する。
var component = new Object2DComponent_Custom_RotateComponent();
// オブジェクトに回転コンポーネントをコンポーネント名"Rotate"で追加する。
obj.AddComponent(component, "Rotate");
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
//Altseedの終了処理をする。
asd.Engine.Terminate();
}
}
Java
class Object2DComponent_Custom
{
public java.lang.String getDescription() {
return "";
}
public java.lang.String getTitle() {
return "";
}
public java.lang.String getClassName() {
return "Object2DComponent_Custom";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("Object2DComponent_Custom", 640, 480, new asd.EngineOption());
// オブジェクトを生成する。
asd.TextureObject2D obj = new asd.TextureObject2D();
// 画像を読み込む。
asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png");
// オブジェクトに画像を設定する。
obj.setTexture(texture);
// オブジェクトの位置を設定する。
obj.setPosition(new asd.Vector2DF(320, 240));
// エンジンにオブジェクトを追加する。
asd.Engine.AddObject2D(obj);
// 回転コンポーネントを生成する。
Object2DComponent_Custom_RotateComponent component = new Object2DComponent_Custom_RotateComponent();
// オブジェクトに回転コンポーネントをコンポーネント名"Rotate"で追加する。
obj.AddComponent(component, "Rotate");
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedの終了処理をする。
asd.Engine.Terminate();
}
}
class Object2DComponent_Custom_RotateComponent extends asd.Object2DComponent
{
protected void OnUpdate()
{
// 毎フレーム、オブジェクトの角度を回転させる
getOwner().setAngle((getOwner().getAngle() + 2));
}
}