У меня есть пара проблем с масштабированием спрайтов, которые, кажется, отлично работают для других людей.
Итак, это моя игра:
Как видите, есть 2 большие проблемы: изображения действительно пикселизированы, а текстуры кровоточат.
Это моя конфигурация:
var config = {
type: Phaser.AUTO,
parent: 'phaser-example',
width: '100%',
height: '100%',
mode: Phaser.Scale.RESIZE,
autoCenter:Phaser.Scale.CENTER_BOTH,
physics: {
default: 'arcade',
arcade: {
debug: true,
},
pixelArt:true,
render:{
antialias: false,
}
},
scene: {
preload: preload,
create: create,
update: update,
}
};
Вот как я предварительно загружаю свои активы:
function preload(){
this.load.image("tiles", "assets/turtle_wars_tiles.png");
this.load.tilemapTiledJSON("tutorial_map", "assets/tutorial_map.json");
//preloading player
this.load.spritesheet("player", "assets/characters.png", {
frameWidth: 26,
frameHeight: 36,
});
}
И вот как я создаю тайловую карту:
const map = this.make.tilemap({ key: "tutorial_map", tileWidth:48,tileHeight:48 });
const tileset = map.addTilesetImage("turtle_wars_tiles", "tiles");
for (let i = 0; i < map.layers.length; i++) {
const layer = map.createStaticLayer(i, tileset,0,0)
layer.setDepth(i);
layer.setScale(5)
layer.setCollisionByProperty({ collides: true });
this.physics.add.collider(this.player.collider, layer).collideCallback = () =>{
this.player.collide()
};
}
Я попытался выдавить свой набор тайлов 16x16 тайлов, но это испортило всю мою карту, и это только решает проблему кровотечения текстуры.
Есть идеи, как я могу это решить?
Я только что попробовал это на небольшом демо-проекте, думаю, решение простое, отредактировать свою игру - config
на этот (проверьте код ниже).
Информация: Вы добавили правильные свойства, но только в physics
- Объект. Я принадлежу на один уровень выше.
Вот так должно работать:
var config = {
type: Phaser.AUTO,
parent: 'phaser-example',
width: '100%',
height: '100%',
mode: Phaser.Scale.RESIZE,
autoCenter: Phaser.Scale.CENTER_BOTH,
physics: {
default: 'arcade',
arcade: {
debug: true,
},
},
pixelArt: false,
render: {
antialias: false,
}
...
};