@BloodySucker

Phaser + JS Проблема с передачей обьекта в переменную, как фиксить?

<script src="phaser.js"></script>
<script type="text/javascript">

    var game = new Phaser.Game(640, 480, Phaser.AUTO, '', { preload: preload, create: create, update: update });

    var PlayerHero;
    //Определяет позицию героя от левого края экрана
    var PlayerStage = 1;
    //Количество фоновых объектов
    var BackCount;
    var BackObj = new Array();
    //Количество объектов с которыми можно столкнуться
    var FrontCount;
    var FrontObj = new Array();

    function preload() {
        game.load.image('floor', 'assets/floor.png');
        game.load.image('background', 'assets/background.png');
        game.load.image('player', 'assets/player.png')
    }

    function createHero(x, y) {

        var hero = game.add.sprite(x, y, 'player');
        hero.anchor.setTo(0.5, 0.5);
        hero.body.collideWorldBound = true;
        hero.body.bounce.setTo(0, 0);
        hero.body.immovable = true;

        return hero;
        
    }

    function create() {

        game.add.tileSprite(0, 0, 640, 480, 'background');
        game.add.tileSprite(0, 240, 640, 240, 'floor');

        PlayerHero = createHero(64, 304);
    }

    function createFrontObject(number) {
        //Создание фоновых объектов
        var FrontObject = game.add.sprite(640, number * 240, 'front');
        FrontCount = FrontCount + 1;

        return FrontObject;

    }

    function update () {

        PlayerHero.x = PlayerHero.x + (100 * dt);
        FrontObj[FrontCount + 1] = createFrontObject(Math.floor(Math.random() * 3));

        if (FrontCount > 6) {
            FrontCount = 1;
        }

    }

</script>


PlayerHero.x = PlayerHero.x + (100 * dt);
Эта строка чисто для дебага.
При дебаге не появляется черный экран, без дебага, виден лишь черный экран.
Проблема явно в том, что PlayerHero попросту пуст. Сразу говорю, что я нуб в JS, но я пробовал PlayerHero выносить за функцию, чтобы переменная случайно не была локальной, да и в общем все делал по туториалу на хабре, кроме того переменную не забыл обьявить, чтобы опять же не было проблем с локальностью переменной и пробовал ставить функцию CreateHero выше create, но опять же не помогло, персонаж отрисовывается, те с функцией CreateHero все хорошо, но как только я пытаюсь им управлять, черный экран и гудбай америка.
В общем, как исправить?
  • Вопрос задан
  • 2694 просмотра
Пригласить эксперта
Ответы на вопрос 1
1. кури учебник жс
2. кури примеры фазера
3. напиши debugger; в начале функции update и пройди в дебаге.

я лично не вижу, что за переменная такая dt. Вполне может быть что у тебя к PlayerHero.x прибавляется неведомо что и спрайт улетает в ад.

если тебе нужно время с прошлого апдейта, то есть такое свойство game.time.physicsElapsedMS

читать тут https://phaser.io/docs/2.6.2/Phaser.Time.html#phys...

еще такой момент, что неясно зачем у тебя в каждом апдейте создается новый спрайт, и что дает этот счетчик.
вообще, счетчик не нужен, достаточно array.length, array.push, array.shift, и прочие методы массива применять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы