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

Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 16:53
T116
Доброго дня. Работая над проектом я столкнулся с проблемой в первую очередь не понимания физики))) но и того что происходит.
Дано 2 объекта с риджибади в 3д пространстве.
у обоих есть скрипт Attractor
Синтаксис:
Используется csharp
        // определеяем направление притяжения
        Rigidbody rbToAttract = objToAttract.rb;
        Vector3 direction = rb.position - rbToAttract.position;
        float distance = direction.magnitude;

        float eforce = G * (rb.mass * rbToAttract.mass) / Mathf.Pow(distance, 2); // вычисляем силу гравитационного притяжения
        force = direction.normalized * eforce; // устанавливаем направление силы куда надо притягивать наш спутник.
        rbToAttract.AddForce(force); // бдыщь и тянемся.
 


и ракета
Синтаксис:
Используется csharp
         tr.rotation *= Quaternion.Euler(0f, 0f, inp.z * Time.deltaTime); // поворот по оси Z
        //rb.velocity = transform.up * Time.deltaTime * EnginePower;
        rb.AddForce(transform.up * Time.deltaTime * EnginePower); // EnginePower величина которая зависит от устанавливаемой мощности двигателей


 


в итоге получается обьект стоит на шаре, который земля, и потихоньку двигается, очень незначительно, но как только доходит до определенного параметра силы, то выстреливает как пуля.
мб я что то не так с прилагаемыми силами не так делаю?

пс. Это не ксп, просто задачи схожие.

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 17:11
IDoNotExist
T116 писал(а): float eforce = G * (rb.mass * rbToAttract.mass) / Mathf.Pow(distance, 2); // вычисляем силу гравитационного притяжения


T116 писал(а): но как только доходит до определенного параметра силы, то выстреливает как пуля.

Что не так то? Чем меньше дистанция, тем больше сила. Не думали что дистанция может быть равна нулю?

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 17:18
T116
я понимаю что чем меньше дистанция тем больше сила, это норм) , дистанция между 2 объектами 5 юнитов, размер шара 10, на котором стоит "ракета", суть в том что я понимаю что сила притяжения не совсем линейная, и что при старте я должен приложить силу равную той что меня тянет вниз +N чтобы двигаться вверх, но от чего происходит резкий острел...


пс. еще прикольно что при увеличении мощности, ракета как бы поднимается, но замирает на месте, то есть ей хватает силы чтоб приодолеть чуть чуть силу притяжения, но дальше лететь не может что в прицнипе странно так как чем дальше тем меньше сила притяжения планеты.

пс.2 На старте оба объект тянутся друг к другу с силой 26, (force.magnitude), увеличивая мощность постепенно, ракета поднимается и замирает понятно что сила притяжения падает, но там совсем на чуть чуть. как только сила которую я даю становится больше чем сила притяжения происходит очень дикий старт , я чет думал что в итоге должно быть F1-F2 = F а получается чт то совсем невообрахимое

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 17:44
IDoNotExist
А Use Gravity на Rigidbody включена конечно же?

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 17:49
T116
IDoNotExist писал(а):А Use Gravity на Rigidbody включена конечно же?

нет конечно. мне ж не надо гравитация глобальная, ее моделирует сам атрактор

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 17:51
IDoNotExist
Тогда не понятно что у вас и куда стреляет, скрины хоть приложите чтоли.
Еще можно через Debug.DrawRay вывести силы которые передаёте на ригидбоди и её текущий Velocity. И посмотреть разницу, может у вас вообще что то направлено не туда куда вы думаете.

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 17:56
Cr0c
Сила хоть в FixedUpdate?

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 18:02
T116
Cr0c писал(а):Сила хоть в FixedUpdate?

к сожалению да)
покой
http://prntscr.com/iaxkgz

это не пауза в игре это в рантайме она вот так вот зависает
http://prntscr.com/iaxkw8
Тогда не понятно что у вас и куда стреляет, скрины хоть приложите чтоли.
Еще можно через Debug.DrawRay вывести силы которые передаёте на ригидбоди и её текущий Velocity. И посмотреть разницу, может у вас вообще что то направлено не туда куда вы думаете.


да , мысль хорошая, сделаю посмотрим что получается.
Спасибо)

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 18:03
IDoNotExist
T116 писал(а):как только сила которую я даю становится больше чем сила притяжения происходит очень дикий старт , я чет думал что в итоге должно быть F1-F2 = F а получается чт то совсем невообрахимое

Rigidbody.AddForce же идёт постоянно, следовательно сила постоянно накапливается, следовательно она будет стремиться к бесконечности, видимо гравитация будучи нелинейной слишком резко пропадает, что приводит к резкому накоплению силы в двигателе ракеты.

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 06 фев 2018, 19:29
Cr0c
Я бы итеративно считал все силы на объекте, а потом давал силу телу в ригидбоди. И регистрировал тела где-нибудь в контроллере, который считал все силы всем телам и применял сам.
И кроме как в фикседе силу считать и применять - нигде нельзя.

Re: Ньютоновское притяжение 2х объектов.

СообщениеДобавлено: 07 фев 2018, 11:05
T116
ну суть в том что мне особо не надо считать силы, только 1 ракета только 1 старт так по кругу.
Физику конечно я везде обсчитывая в Фикседе))
Я бы итеративно считал все силы на объекте, а потом давал силу телу в ригидбоди. И регистрировал тела где-нибудь в контроллере, который считал все силы всем телам и применял сам.
И кроме как в фикседе силу считать и применять - нигде нельзя.


меня смущает что при увеличении силы она двигается вверх, но не летит. если оставить ее на долгое время с включенной силой то ничего не произойдет.

http://prntscr.com/iba4yx это с отключенным атрактом. направление какое-то странное) если пройти несколько итерация в пошаговом режиме то ракета окажется сверху луча, а на старте она снизу
http://prntscr.com/iba5jb а это сила атрактора ракеты