在r84中翻转THREE.Sprite的最佳方法是什么?

时间:2017-03-04 06:13:56

标签: javascript three.js sprite scale

我已将我的游戏引擎从r69升级为r84。大多数事情都很好,但很少有东西可以打破,这就是其中之一。

以前我只需要做

就可以翻转精灵
sprite.scale.x = -1;

这似乎不再适用于r84。不完全确定原因,现在有人能提供推荐的方法吗?我目前的想法是存储两个版本的纹理并简单地在它们之间切换,但与之前的解决方案相比,这看起来非常低效和混乱。

r84

1 个答案:

答案 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