ゲーム上で動作する2Dの描画オブジェクトを定義します。
このクラスを継承して独自のパラメータを追加したり、イベントに独自のイベントを設定したりすることで、独自の描画オブジェクトクラスを作成出来ます。主にゲーム上で表示するプレイヤー、敵キャラならびにステージ上で動くオブジェクトを定義するのに使用します。
オブジェクト2Dクラスを継承して各々の用途に特化したクラスも用意されております。(リファレンストップの2D項目参照)
このオブジェクトをゲーム上で動かすには、シーンに登録されたレイヤーに登録する必要があります。
オブジェクトは位置、回転、拡大といった変形に関する情報を持っています。これらの値を変更することで、描画される画像等が変形します。例えば、キャラクターが移動したら位置の値を変更し、キャラクターが巨大化したら拡大の値を変更することで容易にキャラクターの見た目の変形を表現できます。
オブジェクトは親子関係を持つことをできます。子になったオブジェクトは親オブジェクトの変形の影響を受けます。例えば親オブジェクトが移動したら同じように子オブジェクトも移動します。親オブジェクトが回転したら、子オブジェクトも親オブジェクトを中心に回転します。親子関係を使用すると、例えばキャラクターの周りを動くサポートメカ等を容易に表現できます。
オブジェクト2Dの通常の描画機能では実現しにくい描画のために、オブジェクト2Dには直接画像を描画する機能を持っています。DrawSpriteAdditionallyという関数で描画はできますが、この描画はOnDrawSpriteAdditionallyというイベント内部でのみ
有効です。それ以外の場所で実行した場合の挙動は未定義です。
名称 | 説明 |
---|---|
Vanish | このオブジェクトを破棄します。 |
AddChild | 指定した2Dオブジェクトをこのオブジェクトの子オブジェクトとしてこのインスタンスに追加します。 |
RemoveChild | 指定した子オブジェクトをこのインスタンスから削除します。 |
名称 | 説明 |
---|---|
IsUpdated | このオブジェクトが更新されるか否か。 |
IsDrawn | このオブジェクトが描画されるか否か。 |
IsAlive | このオブジェクトが破棄されておらず、レイヤーに登録されていれば更新等のイベントが実行されるか。 |
Layer | このオブジェクトが登録されているレイヤー。 |
名称 | 説明 |
---|---|
Position | このオブジェクトの親に対する相対的な位置 |
GlobalPosition | このオブジェクトの親の変形の影響を考慮した絶対的な位置 |
Angle | このオブジェクトの親に対する相対的な回転角度 |
Scale | このオブジェクトの親に対する相対的な拡大率 |
名称 | 説明 |
---|---|
OnStart | オブジェクトがレイヤーに登録された時、ようはレイヤー2DのAddObjectを実行した時に発生する初期化イベント |
OnUpdate | 毎フレーム実行される更新イベント |
OnDrawAdditionally | 追加描画を実行する必要がある時に発生するイベント |
ほぼ全てのサンプルで使用されています。
ここではTextureObject2Dクラスのサンプルを例として提示します。
/// <summary>
/// // TextureObject2Dのサンプル。TextureObject2Dを用いて画像を表示しています。
/// </summary>
class TextureObject2D
{
[System.STAThread]
static void Main(string[] args)
{
// AC-Engineを初期化する。
ace.Engine.Initialize("TextureObject2D", 640, 480, new ace.EngineOption());
// シーンを生成する
var scene = new ace.Scene();
// レイヤーを生成する
var layer = new ace.Layer2D();
// シーンにレイヤーを追加する
scene.AddLayer(layer);
// シーンを切り替える
ace.Engine.ChangeScene(scene);
// テクスチャを読み込む
var tex = ace.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png");
// TextureObject2Dのインスタンスを生成する
var obj = new ace.TextureObject2D();
// 描画に使うテクスチャを設定する
obj.Texture = tex;
// 描画位置を指定する
obj.Position = new ace.Vector2DF(100, 100);
// レイヤーに追加する
layer.AddObject(obj);
// AC-Engineのウインドウが閉じられていないか確認する。
while (ace.Engine.DoEvents())
{
// AC-Engineを更新する。
ace.Engine.Update();
}
// AC-Engineの終了処理をする。
ace.Engine.Terminate();
}
}