我已将游戏引擎从 r69
升级到 r84
。大多数事情都很好,但很少有事情坏了,这就是其中之一。
以前我只需执行以下操作即可翻转 Sprite
sprite.scale.x = -1;
这在 r84
中似乎不再起作用。不完全确定为什么,现在有人可以提供推荐的方法来实现这一目标吗?我当前的想法是存储两个版本的纹理并在它们之间简单地切换,但这与以前的解决方案相比似乎效率低下且困惑。
r84
最佳答案
您正在使用 Sprite 表并想要翻转单个 Sprite 的图像。
您可以使用如下模式通过 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 );
三.js r.84
关于javascript - 在 r84 中翻转 THREE.Sprite 的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592808/