Варианты для коллизии, ручками

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Варианты для коллизии, ручками

Сообщение andrey50604 08 мар 2019, 22:38

Вообщем, дело тут такое.
Решил я сделать физику ручками, чтобы rigitbody не использовать, ну не суть.
Знаю, что в принципе можно сделать, чтобы совсем чуть-чуть отталкивать игрока, что зашёл в коллизию, однако, это не самый лучший метод. Мб чисто логично, у вас есть какие-то другие варианты, как это сделать.
В данный момент, я проверяю Raycast`ом очень маленькую дистанцию
Синтаксис:
Используется csharp
 Cback = Physics.Raycast(_targett.transform.position, Vector3.back, out infoDist, Mathf.Abs(velocity.z) + skin_width+0.5f, triger_mask);

и, немного игрока отталкиваю, однако, проблема в логике, потому что должно быть ещё что-то, насколько я понимаю, до отталкивания.
Синтаксис:
Используется csharp
void Move()
    {
        x = Input.GetAxis("Horizontal");
        z = Input.GetAxis("Vertical");

        if ((Input.GetAxis("Horizontal") != 0) || (Input.GetAxis("Vertical") != 0))
        {
            if (!Cforward || !Cback)
            {
                velocity.z = z * mod_z;
            }
            if (!Cleft || !Cright)
            {
                velocity.x = x * mod_x;
            }
        }
        //Need to fix later
        if (Cforward )
        {
            velocity.z = (infoDist.distance - skin_width) * directionZ*mod_z;
            if(Cforward && z > 0)
            {
                velocity.z = velocity.z * -skin_width * mod_z;
                z = 0f;
            }
        }
}

(directionZ = это Mathf.Sign к значении velocity, а skin_width - это 0.0015f)
Просто проблема возникает из-за того, что оно очень сильно отталкивает, в самом начале входа в объект, и, при большой velocity, мы просто входим в объект немного, вот мб есть какой-то метод лучше?
Прошу прощения, если похожая тема была, но гугл молчит, или я просто гуглить не умею.
andrey50604
UNец
 
Сообщения: 8
Зарегистрирован: 22 май 2018, 12:30

Re: Варианты для коллизии, ручками

Сообщение AngryCat 08 мар 2019, 23:38

andrey50604 писал(а):Вообщем, дело тут такое.
Решил я сделать физику ручками, чтобы rigitbody не использовать, ну не суть.
Знаю, что в принципе можно сделать, чтобы совсем чуть-чуть отталкивать игрока, что зашёл в коллизию, однако, это не самый лучший метод. Мб чисто логично, у вас есть какие-то другие варианты, как это сделать.
В данный момент, я проверяю Raycast`ом очень маленькую дистанцию
Синтаксис:
Используется csharp
 Cback = Physics.Raycast(_targett.transform.position, Vector3.back, out infoDist, Mathf.Abs(velocity.z) + skin_width+0.5f, triger_mask);

и, немного игрока отталкиваю, однако, проблема в логике, потому что должно быть ещё что-то, насколько я понимаю, до отталкивания.
Синтаксис:
Используется csharp
void Move()
    {
        x = Input.GetAxis("Horizontal");
        z = Input.GetAxis("Vertical");

        if ((Input.GetAxis("Horizontal") != 0) || (Input.GetAxis("Vertical") != 0))
        {
            if (!Cforward || !Cback)
            {
                velocity.z = z * mod_z;
            }
            if (!Cleft || !Cright)
            {
                velocity.x = x * mod_x;
            }
        }
        //Need to fix later
        if (Cforward )
        {
            velocity.z = (infoDist.distance - skin_width) * directionZ*mod_z;
            if(Cforward && z > 0)
            {
                velocity.z = velocity.z * -skin_width * mod_z;
                z = 0f;
            }
        }
}

(directionZ = это Mathf.Sign к значении velocity, а skin_width - это 0.0015f)
Просто проблема возникает из-за того, что оно очень сильно отталкивает, в самом начале входа в объект, и, при большой velocity, мы просто входим в объект немного, вот мб есть какой-то метод лучше?
Прошу прощения, если похожая тема была, но гугл молчит, или я просто гуглить не умею.

Чем RigitBody не угодила?
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Варианты для коллизии, ручками

Сообщение andrey50604 09 мар 2019, 18:33

AngryCat писал(а):Чем RigitBody не угодила?

Некоторая их физика мне не нравится. Поэтому и вопрос, мб есть какой-то логичный метод, что должно быть перед этим?
andrey50604
UNец
 
Сообщения: 8
Зарегистрирован: 22 май 2018, 12:30

Re: Варианты для коллизии, ручками

Сообщение 1max1 09 мар 2019, 18:38

Очень гиблое дело, ладно если бы коллайдеры имели простую форму типа куба, но даже так, если объект будет повернут и коллайдеры будут соприкасаться углами, как тогда адекватно оценить дистанцию на которую выталкивать объект? Слишком муторно как по мне...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Варианты для коллизии, ручками

Сообщение Woolf 09 мар 2019, 20:38

1max1 писал(а):ладно если бы коллайдеры имели простую форму типа куба

Шара же ) Самый простой коллайдер - шар.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Варианты для коллизии, ручками

Сообщение 1max1 09 мар 2019, 22:41

Woolf писал(а):
1max1 писал(а):ладно если бы коллайдеры имели простую форму типа куба

Шара же ) Самый простой коллайдер - шар.

Ну да, шара)
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Варианты для коллизии, ручками

Сообщение Cr0c 10 мар 2019, 00:37

Есть же множество настроек у ригидбоди. Есть настройки физ движка. Есть разные виды управления через физику.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: siuovich и гости: 27