Siv3D にはゲーム開発に役立つ機能がたくさんありますが、中でも実際に私がゲームを作るときよく使っている便利な機能を、使用例とともにピックアップしてみました。
Periodic
画像やテキストを点滅させたり、揺らしたりなどの動きを加えるときに便利です。
点滅させるときは .draw(ColorF(色, Periodic::Square0_1(100ms)));
とか。
例:テキストの点滅(ゲームスタート)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F35599%2Fa8f61fc9-2938-889a-ef90-5b1362066548.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=56067674a5767a43962c4946a769b023)
例:カーソルの点滅
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F35599%2F37d15015-c757-fab3-28fa-6f9f025bca1b.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=fddc1d3c63874308cf1717c97eb62af2)
Stopwatch, Timer
一定時間後になにかしたいとき。例えば、タイトル画面でマウスをクリックしてから T 秒後に次のシーンに移るとか、ダメージを受けたら一定時間点滅するなど、時間に関係するちょっとした処理に多用しました。
progress0_1()
で 0.0~1.0 の範囲の値が得られるので、そのままイージング関数に渡したりできるのも便利です。
イージング関数
動きが直線的で単調にならないように、ということで上記の Periodic や Stopwatch と一緒によく使いました。
例:スライドしてくるテキスト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F35599%2Fc0baed5c-74f6-75f5-fbe4-e891084d5754.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a72fc5d0d3d7891ae4d2d51b224a1a1b)
Effect
爆発やキラキラなど、発生してはすぐに消えるような装飾に。
例:煙
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F35599%2Ffd539ab5-24f6-1ab5-b99b-5ec81bc8dd4c.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=425236967083ee5969d82b29fedb966c)
例:敵を倒した時の黒くはじけるエフェクト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F35599%2F23d8aa14-036a-9264-690c-13d429ab0cb1.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=14f30d823e08f5861a14240c08344edd)
アセット (TextureAsset, FontAsset, ...)
Texture や Font、Audio などを、一度登録しておけばどこからでもアクセスできて便利。
あたり判定
あらゆる図形に対して 図形A.intersects(図形B)
で判定できるのがとても楽。
敵とかが画面内にいるかの判定 Scene::Rect().intersects(敵)
をよく使います。