Siv3D で当たり判定
Siv3D の図形の、他の図形との当たり判定を検出するメソッドを使って何か書いてみたかった。
コード
# include <Siv3D.hpp> void Main() { ScreenCapture::BeginGIF(); std::vector<Circle> bullet_vector; Rect target = Rect( 300, Random( 0, Window::Height()), 200, 200 ); bool collided; while (System::Update()) { collided = false; // クリックされたら弾を生成 if (Input::MouseL.clicked) { bullet_vector.push_back( Circle( 0, Mouse::Pos().y, 25) ); } for (unsigned int i = 0; i < bullet_vector.size(); i++){ bullet_vector[i].draw(Palette::Gold); if (!collided&&bullet_vector[i].intersects(target)) collided = true; bullet_vector[i].x += 3; // 中心のx座標が画面外に出たら削除 if (bullet_vector[i].x>Window::Width()) bullet_vector.erase(bullet_vector.begin() + i); } target.draw( collided ? Color( 255, 255, 255, 200) : Color( 255, 255, 255) ); } }
右へ移動する丸を画面上をクリックで生成して、白い四角と衝突したら半透明にするプログラム。
できたもの
何故かGIFアニメがうpできない(´・ω・`)
前はできてたのに。
余談
何もなければこれが今年最後の投稿ですね。
今年はよく更新したなぁと思ったら4月以前は全く投稿してなかった…。
来年は毎週更新できればいいなぁ。