javascript - 在 r84 中翻转 THREE.Sprite 的最佳方法?

标签 javascript three.js sprite scale

我已将游戏引擎从 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/

相关文章:

javascript - 如何在 CSS 中创建响应式 Sprite 表动画?

javascript - 在 Chrome 中加载 iframe 时,“load”事件不会触发

javascript - Eclipse Mars - 一个特定文件不会在比较编辑器中打开?

three.js - 了解 Three.js 中物理正确的光照

javascript - aframe 错误 : Entity. setObject3D 调用的对象不是 THREE.Object3D 的实例

Java & LibGDX : Limit Rendering Range of a Sprite

jquery - 自动 Sprite 计算 - CSS3 或 Jquery?

javascript - D3 : Separating data exit/remove/merge from drawing of elements

php - 更改 Javascript 文件的相对 URL

javascript - Three.js MeshBasicMaterial 无法按预期工作