Add basic planet collision
This commit is contained in:
parent
b02675f4fb
commit
09b3df649c
6 changed files with 42 additions and 11 deletions
|
@ -1,5 +1,6 @@
|
|||
import Module from './module.mjs';
|
||||
import Body from './body.mjs';
|
||||
import * as world from './index.mjs';
|
||||
|
||||
export default class Ship extends Body {
|
||||
constructor(x, y) {
|
||||
|
@ -10,7 +11,9 @@ export default class Ship extends Body {
|
|||
}
|
||||
|
||||
tick() {
|
||||
|
||||
this.tickMotion();
|
||||
this.tickGravity(world.celestials);
|
||||
this.resolveCollisions();
|
||||
}
|
||||
|
||||
addModule(x, y, properties, options) {
|
||||
|
@ -32,4 +35,14 @@ export default class Ship extends Body {
|
|||
[ax + b.x * b.mass, ay + b.y * b.mass], [0, 0])
|
||||
.map(x => x / this.mass);
|
||||
}
|
||||
|
||||
resolveCollisions() {
|
||||
world.celestials.forEach(c => {
|
||||
let dis = this.distanceTo(c);
|
||||
if (dis < c.radius) {
|
||||
this.approach(c, dis - c.radius);
|
||||
this.halt();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue