![]() |
Глюки с коллязиями.
Сделал террайн (стандартный Блитзевый), сделал игрока, игроку назначил Энтити-Радиус.
Прописал коллизии: EntityType Player, TypePlayer ; Коллязия для игрока EntityType level1, Typelevel ; Коллязия для террайна Collisions TypePlayer,TypeLevel,2,3 ; Игрок сталкиваеццо с уровнем. Collisions TypePlayer,TypeObjects,2,2 ; Игрок сталкивается с деревьями, зданиями и прочим. Сделал гравитацию. Запустил игру, а там всё трясё-ё-о-оц-ц-о!!! Примерно так: ![]() Кто-нить знает отчего ето и как можно исправить? :dontknow: |
Re: Глюки с коллязиями.
Это наверно из-за гравитации. :)
|
Re: Глюки с коллязиями.
Известная проблемма. и....легко решаемая. =)
|
Re: Глюки с коллязиями.
|
Re: Глюки с коллязиями.
У тебя гравитация отключается в моммент коллизии с ландшафтом?
Коллизия - вытесняет, и выходит что через раз - есть\нету колиизии, учитывай это. |
Re: Глюки с коллязиями.
Diablo1909, поведай же о решении траблы.
|
Re: Глюки с коллязиями.
не уверен, но как ты гравитацию пишешь? так : MoveEntity Player,0,-1,0 ?
Просто более правельно писать вот так TranslateEntity Player,0,-1,0... Надеюсь поможет... |
Re: Глюки с коллязиями.
Решается так:
Даже если стоит большое значение гравитации он НЕ должен заходить в землю!!! это изза того что ReameWorld стоит после RenderWorld или наоборот=) |
Re: Глюки с коллязиями.
What is a ReameWorld? I do not understand.
|
Re: Глюки с коллязиями.
ето UpdateWorld он оимел ввиду.
RenderWorld никакого отношения к коллизиям не имеет. 2Автомат, забудь про стандартные блицевские коллизии (в проектах сербезнее demo по крайней мере), или юзай физ-двиги или математику+голову. решение проблемы: 1. Посмотри в сторону МоКи. 2. исчи место в которому у тебя изменяется значение dy для игрока, проблема скорее всего там. ЗЫ. обычно такие проблемы встречаются при попытке реализовать прыжок, а так на месте :даже хз: |
Re: Глюки с коллязиями.
у меня гдетто так же было (не помню гдe)
ну вот я сделал так Код:
если игрок колизится с полом то |
Re: Глюки с коллязиями.
Хоррор, как-раз именно это и делает дёрги, я же уже сказал, что коллищиться будет Через Раз, тоесть при коллизии объект оттолкнётся, а потом гравитацией опять примкнётся, потом опять и опять, тоесть будет через раз: примкнул\оттолкнулся. Поэтому и дёрги. Нужно привязать скорость падения к переменной, которая будет изменятся не сразу: 1\0\-1, а постепенно, например при коллизии, уменьшать скорость падения до нуля, но не отменять гравитации от этой скорости.
Цитата:
|
Re: Глюки с коллязиями.
TranslateEntity? Ето что-то новенькое. Я писал
PositionEntity player, EntityX(player),EntityY(player) - (sv_gravity*dt), EntityZ(Player) я немного по-другому решил траблу, но попробую Транслейтом. |
Re: Глюки с коллязиями.
PositionEntity player, EntityX(player)+dx,EntityY(player)+dy, EntityZ(Player)+dz
тожесамое что и translateentity player,dx,dy,dz меньше кода, возможно больше произвоительность (непроверял, поетому утверждать небуду) |
Re: Глюки с коллязиями.
Что за народ, я говорю что хать там MoveEntity Lox,0,-100000,0 небудет разнецы, нет тут тунельного эфекта!
Короче так UpdateWorld RenderWorld Готов поспорить что у тебя щяс вот-так: RenderWorld UpdateWorld Поставь как я сказал и нече утебя не будет дергатся!!!!!!! |
Re: Глюки с коллязиями.
vlad, не, у меня как раз так:
UpdateWorld RenderWorld и при чём тут тунельный эффект? |
Re: Глюки с коллязиями.
А может так?
UpdateWorld() RenderWorld() Вдруг поможет |
Re: Глюки с коллязиями.
Эх...
Выкладывай код применения гравитации к персонажу. Никакой разницы что так: UpdateWorld RenderWorld что так: RenderWorld UpdateWorld Вообще UpdateWorld, это процесс технический, и его не нужно ставить рядом с рендерингом, т.к. Рендеринг нужно ограничивать если УПС (UPS - Update Per Second, пройденый технический цикл (Не Рендер)), ниже например 60. Ещё раз говорю: Цитата:
|
Re: Глюки с коллязиями.
еще раз говорю:
Цитата:
Цитата:
1. UpdateWorld - пересчитывает коллизии и переставлят объекты туда, где они должны стоять по мненю движка. отсюда следует что алгоритм для правильной отрисовки должен быть таким: ставим объекты так_как_хотим_мы провреям коллизии чтоб объекты стояли так как_думает_движок рисуем все_ето. почему прыгает: 1. коллидится не через раз, коллидится все время когда игрок ПЕРЕСЕКАЕТ треррайн (другое дело, что он его персекает через раз), дело в том что он у тебя не всегда персекается (если ето происходит при движении то еще все понятно, но если ето проиходят прыжки на месте - мне лично непонятно в чом тут дело, какая сила заставляет). |
Re: Глюки с коллязиями.
Нафига такой гемор с PositionEntity? Ты делаешь 4 вызова функций за раз, когда можно сделать один Move(Translate)Entity. Причем PositionEntity может игнорировать коллизии. В этом случае, если объект переместился под землю, он может не сразу выбраться оттуда. При использовании Move(Translate)Entity объект остановится перед преградой. Могут еще возникнуть проблемы с гравитацией, если она криво сделана.
|
Re: Глюки с коллязиями.
На сколько мне помнится я когда-то уже с таким сталкивался. Решал просто, помоему так, но могу ошибаться, надо пробывать:
опускаем игрока вниз под действием гравитации если игрок столкнулся с препятствием именно снизу (путем нормали столкновения находиться), то вычисляем высоту терраина в позиции игрока и ставим игрока уже в эту позицию, тогда его никто не будет оталкивать :) |
Часовой пояс GMT +4, время: 10:20. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot