Marco3jp / GameForMeProject

The repository name is a tentative name. The concept is as it is in this title.
MIT License
0 stars 0 forks source link

壁を作る #3

Closed Marco3jp closed 2 years ago

Marco3jp commented 2 years ago
Marco3jp commented 2 years ago

Marco3jp commented 2 years ago

https://twitter.com/Marco_utau/status/1515017015849005057

このスレッドに当たり判定と反射のメモをした

Marco3jp commented 2 years ago

まずはミニマムにしたいので、1tick内に

  1. 当たり判定サービスが当たったことを検知
  2. 当たった場所を検索するサービスが座標を算出
  3. 反射を計算するサービスが反射を算出

を順番に叩くだけにしよう なので1と2と3をもとに、進んだ距離を調整するとかは一旦しない

Marco3jp commented 2 years ago

あ〜〜〜でもこうなると、CollisionCheckerって名前がだんだん適さなくなってきたな 物理処理全般見る形になっている気がする

Marco3jp commented 2 years ago

ただ、CheckerがないとTickerにベタ書きするしかなくなっちゃうんだよな 当たり判定は別に反射に依存するものではないし、当たった場所の検索も反射に依存するものではない でも当たった場所の検索は当たり判定に依存する 反射の計算は当たり判定、当たった場所に厳密には依存しないはず → これはどう分離するか次第で、ある直線に対する反射計算に落とし込むなら独立できる。となると曲線に対して接線を引くサービスが別で必要になりそう

Marco3jp commented 2 years ago

でも当たった場所の検索は当たり判定に依存する

これどうなんだろ、当たり判定のロジックにもよるけど、当たった直線、曲線をグラフとして抽出してこれるなら当たり判定のロジックとは切り離して単なる式に落とし込めるような気もする……?

Marco3jp commented 2 years ago

反射ロジックをサービスに切り出せたので、あとは衝突面の直線を出すサービスがほしい気はする なぜか衝突時に明後日の座標に飛んでいってしまう(そこで動いている角度は正しそう)ので、座標系と角度、移動サービス周りの関係性を整理して壁を作っても大丈夫にしたい

Marco3jp commented 2 years ago

衝突したことを判断することとか、反射角を算出することは比較的汎用なのかな〜と考えていたんだけど、後者はともかく前者はオブジェクト自身が持っていてよかったのではと思ったりしている

Marco3jp commented 2 years ago
Marco3jp commented 2 years ago

ここから作るもの

Marco3jp commented 2 years ago

壁作って反射させることができたので一旦Done