表示するサンプルコードの言語を指定できます。

オブジェクトの挙動を部品化する

Object2DComponentクラスの派生クラスを作ることで、オブジェクトの挙動を部品化することができます。 複数の種類のオブジェクトが共通して持つ挙動などをコンポーネントにして、それをオブジェクトに追加することで部品化を実現します。

回転するコンポーネント

SS

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));
    }
}