Для простоты у меня есть игра, и я пытаюсь заставить свою машину врезаться в стену. Я пытался искать, и я пробовал несколько вещей, как вы увидите ниже, я не уверен, почему я не могу заставить его работать.
Вот код в моей функции create
:
create: function () {
game.physics.startSystem(Phaser.Physics.ARCADE);
this.carSprite = game.add.sprite(game.world.centerX, game.world.centerY, 'car');
game.physics.arcade.enable(this.carSprite);
this.timer = game.time.events.loop(300,
this.addRoad, this);
}
Затем в моей функции update
:
update: function () {
game.physics.arcade.overlap(this.carSprite, this.wallSprite, this.scoring, null, this);
}
Я создаю wallSprite
следующим образом:
addOneRoadSection: function (x, y) {
this.scoreCalculator += 1;
if (this.scoreCalculator == 10) {
this.scoreCalculator = 0;
this.wallSprite = game.add.sprite(x + 100, y, 'wall');
game.physics.arcade.enable(this.wallSprite);
this.wallAnimation = this.wallSprite .animations.add('wallAnimation');
this.wallSprite.animations.play('wallAnimation', 30, true);
this.wallSprite.body.velocity.y = 100;
this.wallSprite.checkWorldBounds = true;
this.wallSprite.outOfBoundsKill = true;
}
}
Я звоню addOneRoadSection
так:
addRoad: function () {
this.addOneRoadSection(this.xValue, 0);
}
addRoad
вызывается в create
с использованием this.timer
.
Итак, вкратце, что это делает, так это то, что когда scoreCalculator
равно десяти, это добавляет стену. Это работает нормально, стена анимируется нормально, но обнаружение столкновений не работает вообще.
Я попытался переместить код внутри оператора if
в свою функцию create
, и он отлично работает с обнаружением столкновений (но другие вещи ломаются, поэтому я не могу оставить его там). Что я делаю не так? У меня есть подозрение, что, поскольку я вызываю this.wallSprite
в среднем примерно раз в секунду, он перезаписывается новым спрайтом, который добавляется как this.wallSprite
, но я не совсем уверен, как еще я должен это сделать?