Вопрос - ответ

03 декабря 2015 18:32

Появился ещё один вопрос. Как реализовать инвентарь? Допустим объект движется по сцене, нажимает на предмет, который оказывается в инвентаре объекта, т.е. в выдвижном окне и потом этот предмет может быть снова изъят из инвентара и использован
Вы можете реализовать инвентарь подобно тому как реализовано подбирание камней в игре Сказ о Пятигоре. Там происходит так, при соприкосновении Колижн объекта главного персонажа с колижн объектом камня, он (камень) перемещается в место над головой персонажа. В вашем случае место над головой персонажа может быть свободное место в инвентаре. Все исходники игры Сказ о Пятигоре находятся в Free SDK движка, можете с ними подробно ознакомиться.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
04 декабря 2015 12:54
При попытке вращать камеру типа TARGET с помощью функции m_cam.target_rotate(_camobj,x_value,y_value); вылетает ошибка в консоли "B4W ERROR: eye_rotate(): Wrong camera object or camera move style", при смене типа камеры на EYE вращение работает без ошибок. Ошибки, видимо, связаны с захватом указателя мыши с помощью request_pointerlock(canvas_elem). Можно ли использовать захват указателя с другим типом камеры? Можно ли привязать ось вращения EYE камеры к произвольной точке/объекту сцены, при этом сохраняя возможность вращения с помощью мыши с захватом указателя?

С ошибкой разобрался. Видимо request_pointerlock по дефолту использует EYE камеру, а как его использовать с другими типами камер? Мне нужно вращать камеру вокруг разных объектов на сцене (с захватом указателя), как это лучше реализовать?
07 декабря 2015 10:37
С ошибкой разобрался. Видимо request_pointerlock по дефолту использует EYE камеру, а как его использовать с другими типами камер? Мне нужно вращать камеру вокруг разных объектов на сцене (с захватом указателя), как это лучше реализовать?

У request_pointerlock() есть параметр rotation_cb. По умолчанию используется вот этот: default_rotation_cb(). Можно переопределить для разных типов камер.
Команда Blend4Web
09 декабря 2015 19:23

Можно переопределить для разных типов камер
Приведи, пожалуйста, пример, как это сделать для target камеры. Самому, с моим знанием js, пока не получается, появляется всё та же ошибка.
10 декабря 2015 10:19
Приведи, пожалуйста, пример, как это сделать для target камеры. Самому, с моим знанием js, пока не получается, появляется всё та же ошибка.

Ну как-то так:

var m_cam = require("camera");
var m_mouse = require("mouse");
var m_phy = require("physics");
var m_scs = require("scenes");

var _vec2_tmp = new Float32Array(2);

function rotation_cb(rot_x, rot_y) {
    var character = m_scs.get_first_character();
    var camera    = m_scs.get_active_camera();
    m_cam.target_rotate(camera, rot_x, rot_y);
    if (character) {
        var angles = m_cam.get_camera_angles_char(camera, _vec2_tmp);
        m_phy.set_character_rotation(character, angles[0], angles[1]);
    }
}

m_mouse.request_pointerlock(elem, null, null, null, null, rotation_cb);
Команда Blend4Web
14 декабря 2015 20:48
Как удалить оригинальный объект из сцены?
15 декабря 2015 13:21

Как удалить оригинальный объект из сцены?

Удаление оригинальных объектов не доступно, доступно удаление скопированных объектов. Можете сделать его невидимым

Для себя хотелось бы знать, зачем вам понадобилось удаление исходного объекта? Такой функционал существовал какое-то время (в релизы не входил), но было принято решение отказаться от него.
15 декабря 2015 14:44
У меня имеется плоскость, на ней динамические объекты, которые могут упасть с плоскости в "бездну".
Если я сделаю объект невидимым (hide_object), 2 проблемы:

объект станет невидимым, но продолжит участвовать в столкновениях;
если объект упадет с плоскости, то браузер продолжит вычислять его падение бесконечно, что приводит у меня к багам отрисовки.
15 декабря 2015 14:47

объект станет невидимым, но продолжит участвовать в столкновениях;
если объект упадет с плоскости, то браузер продолжит вычислять его падение бесконечно, что приводит у меня к багам отрисовки.
Попробуйте отключать физику методом disable_simulation()
Команда Blend4Web
15 декабря 2015 16:41

Ответ на сообщение пользователя Иван Любовников
Попробуйте отключать физику методом disable_simulation()

похоже на костыль, то есть объект который нам больше никогда не понадобится, будет где то висеть скрытый и задизейбленный. А если таких объектов много, как это скажется на памяти?
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.