尝试使一个随机精灵可点击



我想问stackoverflow的大师们,因为我知道大多数时候我都在这里找到我的答案,我想感谢社区在这个网站上提供的大量信息,我有点拘泥于我开始的一个小的学习项目,任何帮助都将不胜感激,这是我下面的代码(我将在代码下面解释问题(:

this.load.atlas('enemies', 'enemies.png','enemies.json');  ####This goes on preload function

#####everything below I added to create function
var monsterData = [
{name: 'Aerocephal', image: 'aerocephal'},
{name: 'Arcana Drake', image: 'arcana_drake'},
{name: 'Aurum Drakueli', image: 'aurum-drakueli'},
{name: 'Bat', image: 'bat'},
{name: 'Daemarbora', image: 'daemarbora'},
{name: 'Deceleon', image: 'deceleon'},
{name: 'Demonic Essence', image: 'demonic_essence'},
{name: 'Dune Crawler', image: 'dune_crawler'},
{name: 'Green Slime', image: 'green_slime'},
{name: 'Nagaruda', image: 'nagaruda'},
{name: 'Rat', image: 'rat'},
{name: 'Scorpion', image: 'scorpion'},
{name: 'Skeleton', image: 'skeleton'},
{name: 'Snake', image: 'snake'},
{name: 'Spider', image: 'spider'},
{name: 'Stygian Lizard', image: 'stygian_lizard'}
];
var monsters = this.add.group();
var monster;
let currentmonster = Phaser.Utils.Array.GetRandom(monsterData);

monsterData.forEach(function(data) {
monster = monsters.create(400,300, 'enemies', currentmonster.image).setOrigin(0.5);
monster.details = data;  


});
monster.on('pointerdown', function (pointer) {
this.setTint(0xff0000);

});
monster.on('pointerout', function (pointer) {
this.clearTint();
});
monster.on('pointerup', function (pointer) {
this.clearTint();
});

基本上,我的怪物确实像预期的那样繁殖,每次我刷新页面时它们都会更改精灵,但点击功能不起作用,它根本不会点击它,什么都没有发生,控制台上没有错误,我是不是处理错了?请提出任何建议,我们将不胜感激

我的主要函数看起来像本教程中的函数:教程

您缺少setInteractive()方法,该方法使Phaser知道游戏对象应该侦听输入事件。

修改此行:

monster = monsters.create(400,300, 'enemies', currentmonster.image).setOrigin(0.5);

改为如下:

monster = monsters.create(400,300, 'enemies', currentmonster.image).setOrigin(0.5).setInteractive();

您可以在Phaser 3 Docs for Sprite中阅读更多关于setInteractive的内容。

最新更新