Страница 1 из 1

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

СообщениеДобавлено: 08 мар 2019, 22: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, мы просто входим в объект немного, вот мб есть какой-то метод лучше?
Прошу прощения, если похожая тема была, но гугл молчит, или я просто гуглить не умею.

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

СообщениеДобавлено: 08 мар 2019, 23:38
AngryCat
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 не угодила?

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

СообщениеДобавлено: 09 мар 2019, 18:33
andrey50604
AngryCat писал(а):Чем RigitBody не угодила?

Некоторая их физика мне не нравится. Поэтому и вопрос, мб есть какой-то логичный метод, что должно быть перед этим?

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

СообщениеДобавлено: 09 мар 2019, 18:38
1max1
Очень гиблое дело, ладно если бы коллайдеры имели простую форму типа куба, но даже так, если объект будет повернут и коллайдеры будут соприкасаться углами, как тогда адекватно оценить дистанцию на которую выталкивать объект? Слишком муторно как по мне...

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

СообщениеДобавлено: 09 мар 2019, 20:38
Woolf
1max1 писал(а):ладно если бы коллайдеры имели простую форму типа куба

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

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

СообщениеДобавлено: 09 мар 2019, 22:41
1max1
Woolf писал(а):
1max1 писал(а):ладно если бы коллайдеры имели простую форму типа куба

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

Ну да, шара)

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

СообщениеДобавлено: 10 мар 2019, 00:37
Cr0c
Есть же множество настроек у ригидбоди. Есть настройки физ движка. Есть разные виды управления через физику.