Общая проблема, которую я пытаюсь решить, - выяснить, какая грань куба направлена вверх. Куб может поворачиваться на 90 ° за раз и в любом направлении. Если какое-то лицо обращено вверх, куб исчезает. Я работаю с подростками, чтобы повернуть куб и изменить его положение.найти верхнюю грань куба по запросу
В настоящее время я пытаюсь решить это, создав новый луч с его началом, установленным чуть выше куба, и его направление идет вниз на короткое расстояние, поэтому оно пересекает только верхнюю грань куба. violet thingy on top of die is ray cast downward into the cube
Пока все хорошо. Я получаю свой куб как объект пересечения, когда проверяю за console.log()
, но как только я попытаюсь получить доступ к грани пересечения на faceIntersect.face
, это кажется неопределенным.
Функция в вопросе:
function checkUpperFace(posX, posZ) {
// get position from passed x- and z-values (y is always above cube)
// and set direction and length of ray
var position = new THREE.Vector3(posX, 3, posZ);
var direction = new THREE.Vector3(0, -1, 0);
var far = 2;
// create ray, that goes downwards from above the cube
var cubeRaycaster = new THREE.Raycaster(position, direction, 0, far);
// get intersection with upper face of rolled cube
var faceIntersect = cubeRaycaster.intersectObject(currentCube);
// add a helper to see the ray
var arrowHelper = new THREE.ArrowHelper(direction, position, far, 0x770077);
scene.add(arrowHelper);
console.log(faceIntersect); // object is shown with everything I want to know
console.log(faceIntersect.face); // is shown to be undefined
}
Это было бы проще, я думаю, и единственная причина, я не сделал это таким образом до сих пор потому, что я хотел бы избежать довольно долго, если-то еще о с большим из elses. Но я, вероятно, буду делать это таким образом, если я не смогу решить мою проблему с raycast, так что спасибо. :) – niceWeather