表示するサンプルコードの言語を指定できます。
カメラオブジェクト2D (CameraObject2D)
概要
オブジェクト2Dクラスを拡張し、レイヤー2Dの一部の領域のみを画面に描画できるようにする2D描画オブジェクトクラスです。 レイヤー2Dをカメラで撮影して、撮影結果を画面に表示します。例えば、アクションゲームでプレイヤーの動作に合わせて全ての背景や敵キャラクターを動かすのではなく、カメラのみを動かすことにより処理量が少なく、かつわかりやすい実装を実現します。
プロパティにはSrcとDstが存在が存在します。図で示すように、Srcは描画元となる撮影される領域、Dstは描画先となる画面上の領域になります。これらのサイズは任意で拡大縮小、横方向のみに拡大して描画といった変形もできます。
また、Srcの位置はカメラオブジェクトの位置・回転・拡大の値によって変化します。例えばカメラオブジェクトが右に移動した場合、Srcの位置も右に移動します。キャラクターの位置にあわせてカメラオブジェクトを移動しキャラクターを常に画面の中心に表示するといった使い方に使用できます。
主なメソッド
なし
主なプロパティ
名称 | 説明 |
---|---|
Src | 描画元 |
Dst | 描画先 |
主なイベント
なし
使用方法
CameraObject2Dクラスのサンプルです。
C++
#include <Altseed.h>
/**
@brief カメラを用いた描画空間の一部を切り取って描画するサンプルを表示する。
*/
int main()
{
// Altseedを初期化する。
asd::Engine::Initialize(asd::ToAString("CameraObject2D_Basic").c_str(), 640, 480, asd::EngineOption());
// 画像を読み込む。
auto tex0 = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
// テクスチャを描画するオブジェクトを設定する。
auto obj0 = std::make_shared<asd::TextureObject2D>();
obj0->SetTexture(tex0);
obj0->SetPosition(asd::Vector2DF(10, 10));
obj0->SetScale(asd::Vector2DF(0.7f, 0.7f));
asd::Engine::AddObject2D(obj0);
//画面全体を写すカメラを設定する。(オブジェクトをそのまま描画する。)
auto entityCamera = std::make_shared<asd::CameraObject2D>();
entityCamera->SetSrc(asd::RectI(0, 0, 640, 480));
entityCamera->SetDst(asd::RectI(0, 0, 640, 480));
asd::Engine::AddObject2D(entityCamera);
//テクスチャの左上から縦横150ピクセルを切り取って描画するカメラを設定する。
auto camera = std::make_shared<asd::CameraObject2D>();
camera->SetSrc(asd::RectI(10, 10, 150, 150));
camera->SetDst(asd::RectI(450, 10, 150, 150));
asd::Engine::AddObject2D(camera);
// Altseedのウインドウが閉じられていないか確認する。
while (asd::Engine::DoEvents())
{
// Altseedを更新する。
asd::Engine::Update();
}
// Altseedを終了する。
asd::Engine::Terminate();
}
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// カメラを用いた描画空間の一部を切り取って描画するサンプルを表示する。
/// </summary>
public class CameraObject2D_Basic
{
public string Description
{
get { return "カメラを用いて描画空間の一部を切り取って描画するサンプルです。"; }
}
public string Title
{
get { return "カメラの基本"; }
}
public string ClassName
{
get { return "CameraObject2D_Basic"; }
}
[System.STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("CameraObject2D_Basic", 640, 480, new asd.EngineOption());
// 画像を読み込む。
var tex0 = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");
// テクスチャを描画するオブジェクトを設定する。
var obj0 = new asd.TextureObject2D();
obj0.Texture = tex0;
obj0.Position = new asd.Vector2DF(10, 10);
obj0.Scale = new asd.Vector2DF(0.7f, 0.7f);
asd.Engine.AddObject2D(obj0);
//画面全体を写すカメラを設定する。(オブジェクトをそのまま描画する。)
var entityCamera = new asd.CameraObject2D();
entityCamera.Src = new asd.RectI(0, 0, 640, 480);
entityCamera.Dst = new asd.RectI(0, 0, 640, 480);
asd.Engine.AddObject2D(entityCamera);
//テクスチャの左上から縦横150ピクセルを切り取って描画するカメラを設定する。
var camera = new asd.CameraObject2D();
camera.Src = new asd.RectI(10, 10, 150, 150);
camera.Dst = new asd.RectI(450, 10, 150, 150);
asd.Engine.AddObject2D(camera);
// Altseedのウインドウが閉じられていないか確認する。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
Java
/**
* カメラを用いた描画空間の一部を切り取って描画するサンプルを表示する。
*/
public class CameraObject2D_Basic
{
public java.lang.String getDescription() {
return "カメラを用いて描画空間の一部を切り取って描画するサンプルです。";
}
public java.lang.String getTitle() {
return "カメラの基本";
}
public java.lang.String getClassName() {
return "CameraObject2D_Basic";
}
public static void main(String args[])
{
// Altseedを初期化する。
asd.Engine.Initialize("CameraObject2D_Basic", 640, 480, new asd.EngineOption());
// 画像を読み込む。
asd.Texture2D tex0 = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png");
// テクスチャを描画するオブジェクトを設定する。
asd.TextureObject2D obj0 = new asd.TextureObject2D();
obj0.setTexture(tex0);
obj0.setPosition(new asd.Vector2DF(10, 10));
obj0.setScale(new asd.Vector2DF(0.7f, 0.7f));
asd.Engine.AddObject2D(obj0);
// 画面全体を写すカメラを設定する。(オブジェクトをそのまま描画する。)
asd.CameraObject2D entityCamera = new asd.CameraObject2D();
entityCamera.setSrc(new asd.RectI(0, 0, 640, 480));
entityCamera.setDst(new asd.RectI(0, 0, 640, 480));
asd.Engine.AddObject2D(entityCamera);
// テクスチャの左上から縦横150ピクセルを切り取って描画するカメラを設定する。
asd.CameraObject2D camera = new asd.CameraObject2D();
camera.setSrc(new asd.RectI(10, 10, 150, 150));
camera.setDst(new asd.RectI(450, 10, 150, 150));
asd.Engine.AddObject2D(camera);
// Altseedのウインドウが閉じられていないか確認する。
while(asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}