Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Altseed2.TypeBasedCollision

Avatar for wraikny wraikny
May 12, 2021
66

 Altseed2.TypeBasedCollision

Altsees2.TypeBasedCollision は、型をキーとして衝突対象の管理を平易かつ高速に行うためのライブラリです。

2021/05/12 の AmusementCreators 定例MTでLTを行いました。

GitHub
https://github.com/wraikny/Altseed2.TypeBasedCollision

NuGet
https://www.nuget.org/packages/Altseed2.TypeBasedCollision

訂正
* サンプルの`KeyPlayer`となっている箇所は`PlayerNode`です。

Avatar for wraikny

wraikny

May 12, 2021

Transcript

  1. モチベーション Altseed2チュートリアルの衝突判定処理は無駄が多い。 • O(N^2)ですべての組で衝突判定を行っている。 ◦ 特定の対象とだけ処理を行いたい場合がある。 ▪ 敵の弾と衝突判定を行うのは自機だけ ▪ 弾同士の衝突判定を行う必要はない

    • 特定の対象のみを抽出するのもコストになってしまう。 ◦ 100個のノードがあるけど抽出する対象は実際には 5個しかない、とか。 ◦ ラベルで管理とか嫌だし、等価判定のオーバーヘッドもある。 • そもそも継承ってしんどくない? ◦ Composabilityなど
  2. Altseed2.TypeBasedCollision その辺を解決するライブラリを作成しました。 • 特定の型`T`をキーとして管理される、CollisionNode<T>クラスを提供 ◦ 特定のキーのCollisionNode<U>を対象として、衝突判定処理を呼び出す方式 • 衝突判定処理は任意のタイミングで呼び出せる ◦ CheckCollision(Action

    onCollided)メソッドを呼び出す • キーによる抽出処理自体が行われない ◦ ジェネリック静的クラスで解決する • 扱いたいオブジェクトの子ノードとして登録して利用する ◦ 継承よりcomposition