-
Notifications
You must be signed in to change notification settings - Fork 1
シーン切り替え(シルエット)
Reputeless edited this page Mar 14, 2017
·
3 revisions
# include <Siv3D.hpp>
# include <HamFramework.hpp>
using MyApp = SceneManager<String>;
void Fade(double t, bool in)
{
if (t > 0.75)
{
Window::ClientRect().draw(ColorF(0.0));
return;
}
t *= (1 / 0.75);
Graphics2D::SetStencilState(StencilState::Replace);
Graphics2D::SetStencilValue(1);
TextureAsset(L"siv3d-kun")
.scale(4 * EaseIn(Easing::Quad, 1 - t))
.rotate((in ? (1.0 - t) : t) * 10)
.drawAt(Window::Center());
Graphics2D::SetStencilState(StencilState::Test(StencilFunc::NotEqual));
Window::ClientRect().draw(ColorF(0.0, t * 4.0));
Graphics2D::SetStencilState(StencilState::Default);
}
void FadeIn(double t)
{
Fade(1.0 - t, true);
}
void FadeOut(double t)
{
Fade(t, false);
}
struct Title : MyApp::Scene
{
void init() override
{
Graphics::SetBackground(Palette::Seagreen);
}
void update() override
{
if (Input::MouseL.clicked)
changeScene(L"Game1", 3500);
}
void draw() const override {}
void drawFadeOut(double t) const override
{
FadeOut(t);
}
};
struct Game1 : MyApp::Scene
{
void init() override
{
Graphics::SetBackground(Palette::Skyblue);
}
void update() override
{
if (Input::MouseL.clicked)
changeScene(L"Game2", 3500);
}
void draw() const override
{
for (auto p : step({ 8, 6 }))
{
Circle(p * 80 + Point(40, 40), 20).draw(HSV(0, 1.0 - p.y / 5.0, 1.0));
}
}
void drawFadeIn(double t) const override
{
draw();
FadeIn(t);
}
void drawFadeOut(double t) const override
{
draw();
FadeOut(t);
}
};
struct Game2 : MyApp::Scene
{
void init() override
{
Graphics::SetBackground(Palette::Orange);
}
void update() override
{
if (Input::MouseL.clicked)
changeScene(L"Game1", 3500);
}
void draw() const override
{
for (auto p : step({ 8, 6 }))
{
Rect(40).setCenter(p * 80 + Point(40, 40)).draw(HSV(180, 1.0 - p.y / 5.0, 1.0));
}
}
void drawFadeIn(double t) const override
{
draw();
FadeIn(t);
}
void drawFadeOut(double t) const override
{
draw();
FadeOut(t);
}
};
void Main()
{
TextureAsset::Register(L"siv3d-kun", L"Example/siv3d-kun.png");
MyApp manager;
manager.add<Title>(L"Title");
manager.add<Game1>(L"Game1");
manager.add<Game2>(L"Game2");
while (System::Update())
{
if (!manager.updateAndDraw())
break;
}
}
- Siv3D の基本
- 図形を描く
- テクスチャを描く
- テキストを描く
- 文字列と数値の変換
- キーボード入力
- マウス入力
- サウンドの再生
- MIDI の再生
- ウィンドウと背景
- 図形のあたり判定
- 乱数
- ダイアログ
- ドラッグ & ドロップ
- アプリの状態
- テキストファイル
- INI, CSV, JSON
- バイナリファイル
- GUI
- アセット管理
- 画像編集
- Web カメラ
- マイク入力
- 経過時間の測定
- HSV カラー
- ファイルダウンロード
- 3D 描画
- 2D のレンダーステート
- 3D のレンダーステート
- パーティクル
- スクリーンショット
- アプリケーションの公開
- さらに学ぶには
- アプリランチャーを作ろう
- 音楽プレイヤーを作ろう
- 横スクロールゲームを作ろう
- ドット絵エディタを作ろう
- シーン遷移をサポートする SceneManager の使い方
- Siv3D ミニサンプル集
- タスクシステムを使う
- スケッチ
- 画像ビューアー
- オーディオスペクトラム
- マイク入力スペクトラム
- 文字色の反転
- 天気予報
- ドットお絵かき
- 15パズル
- ブロックくずし
- 時計
- 音楽プレイヤー
- ピアノ
- ライフゲーム
- シーン管理
- 地球
- 3Dシーン
- 3D交差判定
- Wooden Mirror
- シューティングゲーム
- Image to Polygon
- Sketch to Polygon
- 軌跡
- Plot3D
- テンポとピッチの変更
- 長方形の影
- Twitterクライアント
- Polygon to Mesh
- 3Dテキスト
- アプリ終了の確認
- 地形の生成
- アーカイブファイル
- GUIのアニメーション
- Aero Glassエフェクト
- Glitch
- リンクテキスト
- 付箋
- シーン切り替え(シルエット)
- MIDIシーケンサー
- 数つなぎ
- 画面を揺らす
- 対称定規
- aobench
- MIDIビジュアライザー
- 電卓
- 手書き文字認識
- 顔検出
- 音声合成
- Image to PhysicsBody