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

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

Появился ещё один вопрос. Как реализовать инвентарь? Допустим объект движется по сцене, нажимает на предмет, который оказывается в инвентаре объекта, т.е. в выдвижном окне и потом этот предмет может быть снова изъят из инвентара и использован
Вы можете реализовать инвентарь подобно тому как реализовано подбирание камней в игре Сказ о Пятигоре. Там происходит так, при соприкосновении Колижн объекта главного персонажа с колижн объектом камня, он (камень) перемещается в место над головой персонажа. В вашем случае место над головой персонажа может быть свободное место в инвентаре. Все исходники игры Сказ о Пятигоре находятся в Free SDK движка, можете с ними подробно ознакомиться.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
04 декабря 2015 12:54 #5640
При попытке вращать камеру типа 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 #5672
С ошибкой разобрался. Видимо request_pointerlock по дефолту использует EYE камеру, а как его использовать с другими типами камер? Мне нужно вращать камеру вокруг разных объектов на сцене (с захватом указателя), как это лучше реализовать?

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

Можно переопределить для разных типов камер
Приведи, пожалуйста, пример, как это сделать для target камеры. Самому, с моим знанием js, пока не получается, появляется всё та же ошибка.
10 декабря 2015 10:19 #5787
Приведи, пожалуйста, пример, как это сделать для 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 #5866
Как удалить оригинальный объект из сцены?
15 декабря 2015 13:21 #5875

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

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

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

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

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

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

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