中学生ぐらいのベクトルがようやく役に立った。というか忘れてた。
新しく追加したクラスは
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 コメント :: 壁との当たり判定
コメントを投稿