壁との当たり判定


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

コメントを投稿