IzeBerg 128 Posted June 27, 2015 Мне удалось (спустя немало костылей) сделать так, чтобы можно было создать Vehicle (наследник BigWorld.Entity, по-сути является объектом-танком) в указанной точке на карте. Теперь возникли вопросы: Как его корректно "устанавливать" на землю (настроить наклон вперед-назад/вправо-влево)? - Сейчас я могу ставить на землю/дома/другие объекты (x/y/z координаты), но нормально подстроить наклоны не могу. Как ему корректно менять координаты (телепортировать/двигать)? - В методах я не нашел ничего, вызывать поля base/cell можно только для "подключенных" энтити (это мне сообщает BigWorld), т.е. тех, которые получены от сервера. Как вариант - пробовал пересоздать модель, но она пересоздается очень долго (грузят заново ресурсы и т.д.) Если мне тут дадут ответ хотя-бы на первый вопрос - со вторым мне уже будет проще (на костылях смогу, может быть). Quote Share this post Link to post Short link Share on other sites
Helkar 385 #279839 Posted June 27, 2015 лично не пробовал задавать эти параметры, но в принципе это yaw, roll и pitch в свойствах класса танка. Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #279882 Posted June 28, 2015 лично не пробовал задавать эти параметры, но в принципе это yaw, roll и pitch в свойствах класса танка. Их задавать можно до создания, как оределять их (roll/pitch)? Они Read-Only, т.е. после создания уже не изменить. Quote Share this post Link to post Short link Share on other sites
Helkar 385 #279937 Posted June 28, 2015 (edited) entity.model.motors[0].signal - это матрица которую можно редактировать. например, так: from gui.ClientHangarSpace import _createMatrix import math entity.model.motors[0].signal = _createMatrix(1, (-math.pi/2, -math.pi/4, -math.pi/4), (50, 30 + index * 10, 50)) первый аргумент _createMatrix масштаб элемента, второй это tuple углов в радианах, третий tuple координат в пространстве. забавные вещи получаются: Edited June 28, 2015 by Helkar Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #279991 Posted June 28, 2015 (edited) entity.model.motors[0].signal - это матрица которую можно редактировать. например, так: from gui.ClientHangarSpace import _createMatrix import math entity.model.motors[0].signal = _createMatrix(1, (-math.pi/2, -math.pi/4, -math.pi/4), (50, 30 + index * 10, 50)) первый аргумент _createMatrix масштаб элемента, второй это tuple углов в радианах, третий tuple координат в пространстве. забавные вещи получаются: Двигается, спасибо. Нас сколько я понял - двигая signal двигается только моделька, т.е. поля у Entity position/yaw/pitch/roll не трогаются. Печаль. Остался первый вопрос (как определить наклоны, что правильно относительно земли расположить?). Edited June 28, 2015 by IzeBerg Quote Share this post Link to post Short link Share on other sites
Helkar 385 #279995 Posted June 28, 2015 (edited) вопрос не тривиальный. например, мы смотрим угол наклона земли в центре танка. а что если рядом лежит какой то камень который должен изменить угол наклона танка? ...или получатся какие то столкновения с окружающими объектами? может в движке уже есть что то готовое, но сам "на коленке" такое не напишешь Edited June 28, 2015 by Helkar Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #280007 Posted June 29, 2015 (edited) вопрос не тривиальный. например, мы смотрим угол наклона земли в центре танка. а что если рядом лежит какой то камень который должен изменить угол наклона танка? relief.png ...или получатся какие то столкновения с окружающими объектами? может в движке уже есть что то готовое, но сам "на коленке" такое не напишешь Паинт доставил, но сначала хотя-бы просто научится узнавать угол наклона земли в конкретной очке. А потом уже есть в клиенте куча способов "сталкивать" друг с другом Entity (а камень, как ни странно, еще какое Entity), думаю один из них подойдет. P.s. Если как на картинке ставить - то он просто сквозь камни ляжет (если не учитывать камни и подобные объекты). Edited June 29, 2015 by IzeBerg Quote Share this post Link to post Short link Share on other sites
Helkar 385 #280032 Posted June 29, 2015 (edited) Если как на картинке ставить - то он просто сквозь камни ляжет я понимаю что можно поставить и сквозь камни, но это ведь не желаемое поведение? сначала хотя-бы просто научится узнавать угол наклона земли в конкретной очке идея в том чтоб задать 2 точки: первую глубоко под землей, другую высоко над землей и вызвать данную функцию: BigWorld.wg_collideSegment(BigWorld.player().spaceID, стартовая позиция, финальная позиция, 128) она возвращает tuple: первый аргумент точка на земле, второй аргумент нормаль поверхности земли в точке. Edited June 29, 2015 by Helkar Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #280043 Posted June 29, 2015 (edited) идея в том чтоб задать 2 точки: первую глубоко под землей, другую высоко над землей и вызвать данную функцию: BigWorld.wg_collideSegment(BigWorld.player().spaceID, стартовая позиция, финальная позиция, 128) она возвращает tuple: первый аргумент точка на земле, второй аргумент нормаль поверхности земли в точке. Я это умею и использую. Но данным способом находится только высота земли в заданных координатах. Там наклон земли не передается, на сколько я понял. Была мысль на соседних точках сделать такое и как-то провести два вектора, но как это сделать я пока не могу понять. я понимаю что можно поставить и сквозь камни, но это ведь не желаемое поведение? Ну хоть какое-то. Если с этим разобраться, то можно уже и пробовать сталкивать с камешками и другими объектами. Edited June 29, 2015 by IzeBerg Quote Share this post Link to post Short link Share on other sites
Helkar 385 #280051 Posted June 29, 2015 Но данным способом находится только высота земли в заданных координатах. Там наклон земли не передается, на сколько я понял. второй аргумент - нормаль поверхности земли в точке. https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C Quote Share this post Link to post Short link Share on other sites
IzeBerg 128 #280205 Posted July 1, 2015 https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C Я нуб. Дело решилось верчением одного поля. Quote Share this post Link to post Short link Share on other sites