Need help spawning falling items in random position html5

Discussion in 'Other IT certifications' started by saarrajames, Oct 27, 2017.

  1. saarrajames

    saarrajames New Member

    5
    0
    1
    I am trying to make a platformer mod of the first tutorial platformer, and this is my first time working with a phaser. I am attempting to have diamonds spawn from the sky on a timer, that the player may collect. Everything except the spawning of diamonds seems to be working correctly, my code is as follows:

    <!--The sprites and some of the motion controls for this game come from
    this tutorial: xyz.com -->
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8" />
    <title>Phaser - Making your first game, part 9</title>
    <script type="text/javascript" src="js/phaser.min.js"></script>
    <style type="text/css">
    body {
    margin: 0;
    }
    </style>
    </head>
    <body>

    <script type="text/javascript">

    //sets up a game, setting the area of play and loading it in
    var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });

    //loads what will be needed for the game before the game starts
    function preload() {

    game.load.image('sky', 'assets/sky.png');
    game.load.image('ground', 'assets/platform.png');
    game.load.image('diamond', 'assets/diamond.png');
    game.load.spritesheet('dude', 'assets/dude.png', 32, 48);

    }

    //here I can set variables that can be accessed by creating,
    //much like putting in variables before calling them in unity
    var player;
    var platforms;
    //directional keys to use for movement
    var cursors;

    var score = 0;
    var scoreString = '';
    var scoreText
    var scoreText;
    var firingTimer = 0;

    //uses the preloaded items and other lines of code to make the beef of the game
    function create() {
    game.add.sprite(0, 0, 'sky');
    //enables arcade physics
    game.physics.startSystem(Phaser.Physics.ARCADE);

    diamonds = game.add.group();
    diamonds.enableBody = true;

    diamonds.createMultiple(30, 'diamond');
    diamonds.setAll('anchor.x', 350);
    diamonds.setAll('anchor.y', 350);
    diamonds.setAll('outOfBoundsKill', true);
    diamonds.setAll('checkWorldBounds', true);


    // The score
    scoreString = 'Score : ';
    scoreText = game.add.text(10, 10, scoreString + score, { font: '34px Arial', fill: '#fff' });
    //background


    //will contain the ground
    platforms = game.add.group();
    //any object in the platforms group will have a body
    platforms.enableBody = true;
    // Here is where the ground is created
    var ground = platforms.create(0, game.world.height - 64, 'ground');
    // Scale it to fit the width of the game (the original sprite is 400x32 in size)
    ground.scale.setTo(2, 2);
    // This stops the ground from falling away when you jump on it
    ground.body.immovable = true;


    // The player and its settings
    player = game.add.sprite(350, 400, 'dude');
    // We need to enable physics on the player
    game.physics.arcade.enable(player);
    // Player physics properties.
    player.body.bounce.y = 0.2;
    player.body.gravity.y = 600;
    player.body.collideWorldBounds = true;
    //Our two animations, walking left and right.
    player.animations.add('left', [0, 1, 2, 3], 10, true);
    player.animations.add('right', [5, 6, 7, 8], 10, true);

    //controls
    cursors = game.input.keyboard.createCursorKeys();
    }

    function update() {

    console.log(firingTimer);
    // Collide the player with the ground
    game.physics.arcade.collide(player, platforms);

    // Reset the players velocity (movement)
    //this means that if no keys are pressed, the player will
    //remain in place
    player.body.velocity.x = 0;

    //if the left arrow is pressed, add velocity to the player and play an animation
    if (cursors.left.isDown)
    {
    // Move to the left
    player.body.velocity.x = -400;
    player.animations.play('left');
    }
    //if the right arrow is pressed, add velocity to the player and play an animation
    else if (cursors.right.isDown)
    {
    // Move to the right
    player.body.velocity.x = 400;
    player.animations.play('right');

    }
    else
    //if no keys are pressed. an animation is set to one constant frame
    //and no velocity is added
    {
    //Stand still
    player.animations.stop();
    //sets player's frame to the one facing forward
    player.frame = 4;
    }

    // Allow the player to jump if they are touching the ground.
    if (cursors.up.isDown && player.body.touching.down)
    {
    player.body.velocity.y = -350;
    }

    if (game.time.now > firingTimer)
    { //enemyfires
    generateDiamond();
    }
    game.physics.arcade.overlap(diamonds , player, aquireDiamond, null, this);
    }

    function generateDiamond(){
    diamond = diamonds.getFirstExists(false);

    if(diamond){
    diamond.reset(350, 350);
    firingTimer = game.time.now + 2000;
    diamond.body.gravity.y = 200;
    }

    }

    function aquireDiamond(player,diamond){
    diamond.kill ();
    score+=100;
    scoreText.text = scoreString + score;
    Debug.log

    //if time = certain amount then spawn diamond in random
    //position above screen and let it fall, it will not stay on the ground
    }


    </script>

    </body>
    </html>
     
    Last edited: Oct 27, 2017
  2. dmarsh
    Honorary Member 500 Likes Award

    dmarsh Petabyte Poster

    4,305
    503
    259
    I presume they want you to change this.

    if(diamond){
    diamond.reset(350, 350);
    firingTimer = game.time.now + 2000;
    diamond.body.gravity.y = 200;
    }

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

    Seems a bit of a weird way to learn basic coding, but meh..
     

Share This Page

Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.