shootBullet
Permet à un objet de lancer une balle lorsqu'un joueur appuie sur shootKey
triggers on self
"hit"parameters
| Parameter | Default Value | Type | Description |
|---|---|---|---|
speed | number | 1200 | |
margin | vec2 | vec2(36, 32) | |
duration | number | 4 | |
fadeDuration | number | 0.4 | |
bulletSprite | string | "bullet" | |
bulletWidth | number | 20 | |
tag | string | "alive" | |
damage | number | 1 | |
ongoing | boolean | false | |
bulletReversed | boolean | false | |
collisionIgnore | array | ["player"] |
example
shootBullet({ speed: 1200, margin: vec2(36, 32), duration: 4, fadeDuration: 0.4, bulletSprite: "bullet", bulletWidth: 20, tag: "alive", damage: 1, ongoing: false, bulletReversed: false, collisionIgnore: ["player"]}),function shootBullet(p) { const param = { speed: 1200, margin: vec2(36, 32), duration: 4, fadeDuration: 0.4, bulletSprite: "bullet", bulletWidth: 20, tag: "alive", damage: 1, ongoing: false, bulletReversed: false, collisionIgnore: ["player"], ...p, } return { id: "shoot bullet", add() { this.on("shoot", (facing = 1) => { const direction = vec2(facing, 0) const x = this.pos.x + param.margin.x * facing const y = this.pos.y - param.margin.y const bullet = add([ sprite(param.bulletSprite, { width: param.bulletWidth }), pos(x, y), lifespan(param.duration, { fade: param.fadeDuration }), move(direction.angle(vec2(0, 0)), param.speed), area({ collisionIgnore: param.collisionIgnore }), anchor("center"), opacity(), danger({ tag: param.tag, damage: param.damage, ongoing: param.ongoing, }), "projectile", ]) bullet.onCollide("body", () => { destroy(bullet) bullet.trigger("hit") }) if ((!param.bulletReversed && facing == -1) || (param.bulletReversed && facing == 1)) bullet.flipX = true }) }, }}