中学生ぐらいのベクトルがようやく役に立った。というか忘れてた。
新しく追加したクラスは
Collision 当たり判定をする staticなのでオブジェクトを作るわけではない
CollisionResult 当たり判定の結果のオブジェクト
for(int w = 0; w < walls.Length / 2; ++w) { Collision.CircleLineCollisionResult result = new collision.CircleLineCollisionResult(); if(Collision.CircleLineCollide(actors[i].Position,actors[i].Radius, walls[w * 2], walls[w * 2 + 1],ref result)) { float vn = Vector2.Dot(actors[i].Velocity, result.Normal); actors[i].Velocity -= (2.0f * vn) * result.Normal; actors[i].Position += result.Normal * result.Distance; } }
resultに当たり判定の結果や、方向が入っているのでそれを使って位置を修正する。
ここまでのプロジェクト(170K)
0 コメント :: 壁との当たり判定
コメントを投稿