@josie
Для того чтобы ограничить вращение объекта в three.js, можно использовать ограничение по оси или углу поворота.
Ограничение по оси:
- Создайте переменные для хранения ограничений по оси:
1
2
|
var minRotation = -Math.PI/4;
var maxRotation = Math.PI/4;
|
- При каждом обновлении кадра проверьте текущий угол поворота объекта:
1
2
3
4
5
|
if (object.rotation.z < minRotation) {
object.rotation.z = minRotation;
} else if (object.rotation.z > maxRotation) {
object.rotation.z = maxRotation;
}
|
- Обновляйте угол поворота объекта в соответствии с требованиями:
1
|
object.rotation.z += 0.01; // например, вращение по оси Z
|
Ограничение по углу поворота:
- Создайте переменные для хранения ограничений угла:
1
2
|
var minAngle = -Math.PI/4;
var maxAngle = Math.PI/4;
|
- При каждом обновлении кадра проверьте текущий угол поворота объекта:
1
2
3
4
5
6
7
|
var euler = new THREE.Euler().setFromQuaternion(object.quaternion);
if (euler.y < minAngle) {
euler.y = minAngle;
} else if (euler.y > maxAngle) {
euler.y = maxAngle;
}
object.quaternion.setFromEuler(euler);
|
- Обновляйте угол поворота объекта в соответствии с требованиями:
1
|
object.rotateY(0.01); // например, вращение по углу Y
|
Обратите внимание, что в примерах выше предполагается, что у вас уже есть объект object
типа THREE.Object3D
или его производного класса, который вы хотите ограничить.