create Projectile From Sprite

Create a new motion sprite that starts from the center of another sprite.

sprites.createProjectileFromSprite(img`.`, null, 50, 50)

A projectile is a motion sprite that moves from the location it’s created at. It moves with speeds (velocities vx and vy) that you set in both the horizontal and vertical directions.

The projectile sprite starts from the center of a sprite that you set for it. The vx and vy velocities have either positive or negative values which determine the direction that the projectile moves in.

The projectile has many of the same properties that a non-moving sprite has. It will overlap with other sprites, hit and overlap tiles.

Projectiles are destroyed when they move off of the screen.

Parameters

  • img: an image for the projectile sprite.
  • sprite: the sprite to start the projectile from.
  • vx: the speed in the horizontal direction for the sprite to move at.
  • vy: the speed in the vertical direction for the sprite to move at.

Returns

  • a new projectile sprite that moves with set velocities.

Examples

Send projectiles out of the box

Create a sprite in the shape of a box. Send projectiles out in random directions from the center of the box.

let projectile: Sprite = null
let mySprite = sprites.create(img`
    2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 . . . . . . . . . . . . . . 2 
    2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
    `, SpriteKind.Player)
game.onUpdateInterval(1000, function () {
    projectile = sprites.createProjectileFromSprite(img`
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . 8 8 8 8 . . . . . . 
        . . . . . 8 8 8 8 8 8 . . . . . 
        . . . . . 8 8 a a 8 8 . . . . . 
        . . . . . 8 8 a a 8 8 . . . . . 
        . . . . . 8 8 8 8 8 8 . . . . . 
        . . . . . . 8 8 8 8 . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        . . . . . . . . . . . . . . . . 
        `, mySprite, randint(-50, 50), randint(-50, 50))
})

Photon blaster

Send photons from a spaceship when the B button is pressed.

let photon: Sprite = null
let target = sprites.create(img`
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    e e e e e e e . . . . . . . . . 
    `, SpriteKind.Enemy)
let ship = sprites.create(img`
    .....bbbbbbbbbb...........
    bbbbbbddddddddbbbb........
    bbdddddddddddddddbbbb.....
    .bdddddffffffdddddddbbbb..
    .bdddddddddddddddffddddbb.
    .bbddddddddddddddffdddddbb
    ..bdddfffffffffddddddddbb.
    ..bddddddddddddddddbbbbb..
    .bbdddddddddddddbbbb......
    .bddddddddddbbbb..........
    bbddbbbbbdbbb.............
    bbbbb...bbb...............
    `, SpriteKind.Player)
ship.x = 20
target.x = scene.screenWidth() - 10
controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
    photon = sprites.createProjectileFromSprite(img`
        . . . . . . 1 1 1 . . 
        . . . 1 1 1 1 1 1 1 . 
        1 1 1 1 1 1 1 1 1 1 1 
        . . . 1 1 1 1 1 1 1 . 
        . . . . . . 1 1 1 . . 
        `, ship, 150, 0)
})
sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, otherSprite) {
    sprite.startEffect(effects.disintegrate, 100)
})

See also

create, create projectile from side