![]() |
PositionEntity = MoveEntity
Недавно столкнулся с такой фичей, может кто не знает, будет полезно иметь ввиду.
Всегда считал, что MoveEntity - это передвижение объекта по прямой, а PositionEntity - позиционирование объекта в какой-то точке. Оказывается не все так просто, PositionEntity то же самое перемещение по прямой, только указываем конечный пункт назначения, а не векторы передвижения. К примеру, если вы захотите перепозиционировать объект, имеющий некоторые коллизии, и на пути перемещения этого объекта при использовании PositionEntity будут эти самые коллизии, то они самым прямым образом повлияют на вектор движения объекта, и он окажется не там, где вам хотелось бы его видеть. Вотъ. |
Re: PositionEntity = MoveEntity
Знаю. Было такое, когда делал игру в топике "Совместное занятие =)". Я тогда думал, что это я ошибся, оказыватся не. :-)
|
Re: PositionEntity = MoveEntity
Да нет, это не тоже что и перемещение, это просто специфика работы коллизионной системы такая - проверка ентитей происходит с старыми координатами, а новые уже после этого применяются.
Так что разница есть: либо присвоить координаты в PositionEntity() либо прибавить координаты в TranslateEntity() или с учетом ориентации в MoveEntity() В обход этого можно отключать коллизию перед перемещением EntityType(Энтити, Неиспользуемый_номер_коллизий) PositionEntity(Энтити,...) EntityType(Энтити, Номер_коллизии_Энтити) |
Re: PositionEntity = MoveEntity
Не понял, как может происходить проверка энтити со старыми координатами, если в момент перемещения энтити вообще ни с чем не колизится, и колизиционные объекты находятся совсем не рядом, а лишь на линии перемещения из точки А в точку Б, но суть не в этом: да, верное решение - применение EntityType.
|
Re: PositionEntity = MoveEntity
Ты непонял, проверка коллизий происходит до перемещения ентити в новые координаты, а потом уже по результатам проверки происходит перемещение обьекта на новый вектор в соотвествии с коллизиями, вроде того:
Пользователь: установка новые_координаты Движок:проверка коллизий по вектору старые_коордианты->новые_коордианты Движок:по вектору есть препятствие => установка новые_коордианты ИЛИ Движок:по вектору нет препятствий Движок:перемещаю ентити в новые_коордианты :-) |
Re: PositionEntity = MoveEntity
тоже в свое время столкнулся с это особенностью блитца....=) - При загрузке уровня и расстановке обьектов - присваиваем им Entitytype(), и потом тока в самом конце загрузки устанавливаем коллизии. Ну а как передвинуть обьект в цикле....то это хорошо рассказал Платон.
|
Re: PositionEntity = MoveEntity
Я уже так привык к этой фигне. что не замечаю ее :)
|
Часовой пояс GMT +4, время: 17:49. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot