sprite - 在移相器中使用几乎相同的 Sprite 的良好做法。使用更多 Sprite 的替代方法

标签 sprite phaser-framework

所以,我一直在 Unity 工作,但我决定是时候换成我更了解的东西了:JavaScript。我一直在考虑切换到 Phaser.js,但我有一些关于我什至在 Unity 中遇到的问题的问题,而且我在互联网上搜索时目前没有找到解决方案。我没有代码可以提供,因为我还没有开始在 Phaser 中实际编程,所以我会尽量明确。

我的游戏创意基本上围绕着一些会改变颜色的灯。我的灯 Sprite 看起来相同,但颜色不同,但不完全相同(只有部分颜色不同)。问题是我的游戏有许多不同颜色的灯,并且必须在它们之间进行更改。比如,如果一盏灯是红色的,你点击它,它就会变成绿色。创建和加载这么多看起来几乎相同的 Sprite 似乎是一种不好的做法,我想知道是否有办法通过代码更改 Sprite 或 Sprite 的一部分的颜色。我知道 Phaser 不支持 svg,并且由于性能问题,游戏中的 svg 通常不是一个好主意,但它会节省我很多时间来添加我使用的 Sprite 的生成的 svg 代码并更改填充我想要的部分。

所以,我的问题是:使用多个 sprite 的最佳替代方案(如果有的话)是什么,或者如何更改它们特定部分的颜色?

最佳答案

根据您的灯光 Sprite ,另一种选择是使用 Phaser 的着色功能。

Phaser 中的 sprite 和图像都可以着色,并且由于 Phaser 支持 sprite 分组,即使您只想更改图像的一部分,您也可以轻松地让每个显示的对象由两个 sprite 组成,其中一个是相同的对于所有灯(不变的部分)和另一个也共享但有色的灯。

Phaser 3 example of tinting an image :

this.add.image(300, 300, 'pixel').setTint(0xff0000);

Phaser 3 setTint() documentation .

Phaser 2 CE example of tinting a sprite ,如果您正在考虑使用此版本:

sprite = game.add.sprite(game.world.centerX, game.world.centerY, 'atlas', 'greenJellyfish0000');
sprite.tint = Math.random() * 0xffffff;

关于sprite - 在移相器中使用几乎相同的 Sprite 的良好做法。使用更多 Sprite 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509012/

相关文章:

javascript - JS 对象奇怪的行为

javascript - Sprite 图像的宽度调整为 Ajax 生成的内容

javascript - PHP 变量从一个页面转移到另一个页面

c++ - Sprite 旋转偏移不会停留在它所属的位置。 (SDL)

ios - cocos2d复制 Sprite bug

html - Internet Explorer 11中的相位器音频支持

javascript - 从 Phaser v2.0.1 升级到 v2.7.7 破坏声音

javascript - 从 JSON 文件加载 Phaser Assets 的问题

ios - SpriteKit - 确定正方形碰撞的一侧

javascript - 使用 ScrollMagic 同步 Sprite 和滚动