curveSegments: 2,
bevelEnabled: false,
});
+ game.assets.fonts.geometry[letter].computeBoundingBox();
+ let bbox = game.assets.fonts.geometry[letter].boundingBox;
+ // Add these to local 0,0 later to get the letter's center rotation point
+ game.assets.fonts.geometry[letter].dx = (bbox.max.x - bbox.min.x) / 2;
+ game.assets.fonts.geometry[letter].dy = (bbox.max.y - bbox.min.y) / 2;
}
let mesh = new THREE.Mesh(game.assets.fonts.geometry[letter], letterMaterial);
- word.add(mesh);
+ let container = new THREE.Group();
+ mesh.position.set(-game.assets.fonts.geometry[letter].dx, -game.assets.fonts.geometry[letter].dy, 0);
+ container.add(mesh);
+ word.add(container);
}
word.randomAnimOffset = Math.random();
const vFOV = THREE.MathUtils.degToRad(game.view.camera.fov);
game.objects.pinwheel.position.x = game.view.camera.position.x + game.objects.pinwheel.cameraX;
game.objects.pinwheel.position.y = game.view.camera.position.y + game.objects.pinwheel.cameraY;
- let collectedScale = lerp(0.5, 0.2, game.objects.words.collectedCount / game.objects.words.length);
+ let collectedScale = lerp(0.6, 0.3, 1 - Math.pow(1 - game.objects.words.collectedCount / game.objects.words.length, 2));
for(let i = 0; i < game.objects.words.length; i++) {
let word = game.objects.words[i];
if(!word.collected &&