ダメージの揺れ
https://scrapbox.io/files/64da1f49836ee5001b29842a.png
code:ダメージの揺れ.cpp
# include <Siv3D.hpp>
//Timer タイマー,double 揺れの大きさ
Mat3x2 shakeMat(const Timer& timer, double amplitude = 20) {
constexpr double N = 2;//揺れの回数
return Mat3x2::Translate(amplitude * (Periodic::Sine0_1(timer.duration() / N, timer.sF()) - 1 / N), 0);
}
void Main()
{
Texture texture{ U"example/siv3d-kun.png" };
//振動の続く秒数
Timer timer{ 5s };
while (System::Update())
{
if (MouseL.down())timer.restart();
{
const Transformer2D shakePlayer{ shakeMat(timer) };
texture.drawAt(Scene::Center());
//古いバージョンでは if(timer.isRunning() && 0s < timer)
if (timer.isRunning())texture.drawAt(Scene::Center(), ColorF{ Palette::Red,0.3 });
}
}
}