Add collision radius
This commit is contained in:
parent
6a02ea105a
commit
aee504be88
2 changed files with 77 additions and 2 deletions
|
@ -39,6 +39,7 @@ export class GameContext {
|
|||
private readonly entityPos: vec2 = vec2.clone([6, 6]);
|
||||
private readonly entityMovement: vec2 = vec2.create();
|
||||
|
||||
private readonly collisionRadius = 7 / 16;
|
||||
private readonly walls: LineSegment[] = [
|
||||
LineSegment.fromPoints(vec2.fromValues(1, 1), vec2.fromValues(11, 1)),
|
||||
|
||||
|
@ -99,10 +100,14 @@ export class GameContext {
|
|||
const move = new Movement(this.entityPos, dest);
|
||||
|
||||
for (const w of this.walls) {
|
||||
if (!w.collidesMove(dest2, move))
|
||||
if (!w.collidesMoveCircle(dest2, move, this.collisionRadius))
|
||||
continue;
|
||||
|
||||
if (!vec2.exactEquals(dest, dest2)) {
|
||||
// Ensure termination
|
||||
if (vec2.squaredDistance(this.entityPos, dest2) >= vec2.squaredDistance(this.entityPos, dest))
|
||||
return;
|
||||
|
||||
vec2.copy(dest, dest2);
|
||||
rescan = true;
|
||||
break;
|
||||
|
|
Reference in a new issue