class Bullet extends els.Component{ @select("C",["A","B","C","D"]) speed: number; accelerate: number; @input() gravity: number; @els.input() angle: number; test: number = 100; test4: number = 100; test5: number = 100; test6: number = 1000; private _dx: number = 0; private _dy: number = 0; private _lastX: number; private _lastY: number; private _travelled: number = 0; private _radian: number; constructor() { super(); } create() { var inst: els.GameObject = this.gameobject; this._radian = els.MathUtils.toRadian(this.angle); this._dx = Math.cos(this._radian) * this.speed; this._dy = Math.sin(this._radian) * this.speed; this._lastX = inst.x; this._lastY = inst.y; this._travelled = 0; } tick(): void{ var inst: els.GameObject = this.gameobject; var dt: number = 1 / 60; var s: number, a: number; if (this.accelerate !== 0) { s = new els.Vector2D(this._dx, this._dy).length; if (this._dx === 0 && this._dy === 0) a = this._radian; else a = Math.atan2(this._dy, this._dx); s += this.accelerate * dt; if (s < 0) s = 0; this._dx = Math.cos(a) * s; this._dy = Math.sin(a) * s; if (this.gravity !== 0) this._dy += this.gravity * dt; this._lastX = inst.x; this._lastY = inst.y; if (this._dx !== 0 || this._dy !== 0) { inst.x += this._dx * dt; inst.y += this._dy * dt; this._travelled += new els.Vector2D(this._dx * dt, this._dy * dt).length; } } } }