diff --git a/src/gameobjects/bullet.ts b/src/gameobjects/bullet.ts index 5d8a0c4..b388666 100644 --- a/src/gameobjects/bullet.ts +++ b/src/gameobjects/bullet.ts @@ -1,14 +1,14 @@ import { Tag } from '../constants' import type { Enemy, Player } from '../types' -const BULLET_SPEED = 600 +const BULLET_SPEED = 200 const BULLET_DAMAGE = 20 export function addBullet(player: Player) { const bullet = add([ pos(player.pos), move(getBulletDir(player), BULLET_SPEED), - circle(6), + circle(30), area(), offscreen({ destroy: true }), anchor('center'), diff --git a/src/gameobjects/player.ts b/src/gameobjects/player.ts index b72a7a6..2b38118 100644 --- a/src/gameobjects/player.ts +++ b/src/gameobjects/player.ts @@ -1,5 +1,6 @@ import { Sprite, Tag } from '../constants' import { addCursorKeys } from '../events' +import type { Player } from '../types' import { addBullet } from './bullet' export function addPlayer(x = center().x, y = center().y) { @@ -18,9 +19,34 @@ export function addPlayer(x = center().x, y = center().y) { addCursorKeys(player) + const attack = new Attack(player) + onClick(() => { - addBullet(player) + if (attack.canAttack()) { + attack.update() + addBullet(player) + } }) return player } + +class Attack { + private attackDelay = 1 + private lastAttacked = 0 + private player + + constructor(player: Player) { + this.player = player + } + + update() { + this.lastAttacked = time() + } + + canAttack() { + return !this.lastAttacked + ? true + : this.lastAttacked + this.attackDelay < time() + } +}