我已将我的游戏引擎从r69
升级为r84
。大多数事情都很好,但很少有东西可以打破,这就是其中之一。
以前我只需要做
就可以翻转精灵sprite.scale.x = -1;
这似乎不再适用于r84
。不完全确定原因,现在有人能提供推荐的方法吗?我目前的想法是存储两个版本的纹理并简单地在它们之间切换,但与之前的解决方案相比,这看起来非常低效和混乱。
r84
答案 0 :(得分:2)
您正在使用精灵表,并想要翻转单个精灵的图像。
您可以使用THREE.MirroredRepeatWrapping
这样的模式执行此操作:
// desired sprite row/column index
var iCol = 5;
var iRow = 3;
var flipSprite = true;
// texture
var loader = new THREE.TextureLoader();
var texture = loader.load( "mySpriteMap.jpg" );
// set wrapping to support flipping sprite
texture.wrapS = THREE.MirroredRepeatWrapping;
// set repeat
var nRows = 8; // sprite sheet: 8 rows x 8 cols
var nCols = 8;
texture.repeat.set( 1 / nCols, 1 / nRows );
// set offset
texture.offset.x = flipSprite ? - ( iCol + 1 ) / nCols : ( iCol / nCols ); // MirroredRepeatWrapping;
texture.offset.y = iRow / nRows;
// material
var material = new THREE.SpriteMaterial( { map: texture } );
// sprite
sprite = new THREE.Sprite( material );
three.js r.84