试图使随机精灵可点击

Trying to make a random sprite clickable

我想问一下 Whosebug 的专家,因为我知道大部分时间我都在这里找到答案,我想感谢社区提供这个网站上的所有大量信息,我有点卡住了小小的学习项目我开始了,任何帮助将不胜感激,这是我下面的代码(我将在代码下面解释这个问题):

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();
            });

基本上我的怪物确实按预期生成,每次我刷新页面时它们都会改变 sprite,但是点击功能不起作用,它根本不会点击它,没有任何反应,没有错误在控制台上什么都没有,我是否错误地接近了这个?非常感谢任何建议。

我的主要功能类似于本教程中的功能:Tutorial

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

修改这一行:

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

改成这样:

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

您可以阅读有关 setInteractive in the Phaser 3 Docs for Sprite 的更多信息。