Я использую скрипт Physijs для физики, такой как гравитация. Я хочу перемещать объекты в своей сцене с помощью Raycaster из THREE.js
скрипта. Моя проблема в том, что Raycaster перемещает только объекты (простой ящик), объявленные следующим образом:
var box = new Physijs.Mesh(cubeGeomtery.clone(), createMaterial);
Но тут физика не работает. Это работает, только если я объявлю это так:
var create = new Physijs.BoxMesh(cubeGeomtery.clone(), createMaterial);
А вот рейкастер/мувинг не работает.
Разница между ними в том, что в первом просто Mesh
, а во втором BoxMesh
.
Кто-нибудь знает, почему это не работает? Мне нужно BoxMesh
, чтобы использовать гравитацию и другую физику.
Код для добавления куба
function addCube()
{
controls.enable = false;
var cubeGeomtery = new THREE.CubeGeometry(85, 85, 85);
var createTexture = new THREE.ImageUtils.loadTexture("images/rocks.jpg");
var createMaterial = new THREE.MeshBasicMaterial({ map: createTexture });
var box = new Physijs.BoxMesh(cubeGeomtery.clone(), createMaterial);
box.castShadow = true;
box.receiveShadow = true;
box.position.set(0, 300, 0);
objects.push(box);
scene.add(box);
}
cubeGeomtery
это опечатка? Кажется, должно быть написаноcubeGeometry
. - person user513951   schedule 02.01.2016var cubeGeomtery = new THREE.CubeGeometry(85, 85, 85);
- person Rok   schedule 02.01.2016Physijs.Mesh
в документации по адресу github.com/chandlerprall/Physijs/wiki/ Базовые фигуры. Можете ли вы опубликовать больше вашего кода? - person user513951   schedule 02.01.2016Mesh
принадлежит THREE.js. Если я создаюvar create = new THREE.Mesh(cubeGeomtery.clone(), new THREE.MeshLambertMaterial({ color: 0x0000ff }));
Moving, все работает нормально. Но если я создаю объект с кодом выше (new Physijs.BoxMesh
), он не работает - person Rok   schedule 02.01.2016