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

Программирование на Юнити.

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

Сообщение T116 06 фев 2018, 16:53

Доброго дня. Работая над проектом я столкнулся с проблемой в первую очередь не понимания физики))) но и того что происходит.
Дано 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 величина которая зависит от устанавливаемой мощности двигателей


 


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

пс. Это не ксп, просто задачи схожие.
T116
UNец
 
Сообщения: 38
Зарегистрирован: 28 янв 2017, 02:35

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

Сообщение IDoNotExist 06 фев 2018, 17:11

T116 писал(а): float eforce = G * (rb.mass * rbToAttract.mass) / Mathf.Pow(distance, 2); // вычисляем силу гравитационного притяжения


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

Что не так то? Чем меньше дистанция, тем больше сила. Не думали что дистанция может быть равна нулю?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

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

Сообщение T116 06 фев 2018, 17:18

я понимаю что чем меньше дистанция тем больше сила, это норм) , дистанция между 2 объектами 5 юнитов, размер шара 10, на котором стоит "ракета", суть в том что я понимаю что сила притяжения не совсем линейная, и что при старте я должен приложить силу равную той что меня тянет вниз +N чтобы двигаться вверх, но от чего происходит резкий острел...


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

пс.2 На старте оба объект тянутся друг к другу с силой 26, (force.magnitude), увеличивая мощность постепенно, ракета поднимается и замирает понятно что сила притяжения падает, но там совсем на чуть чуть. как только сила которую я даю становится больше чем сила притяжения происходит очень дикий старт , я чет думал что в итоге должно быть F1-F2 = F а получается чт то совсем невообрахимое
Последний раз редактировалось T116 06 фев 2018, 17:48, всего редактировалось 1 раз.
T116
UNец
 
Сообщения: 38
Зарегистрирован: 28 янв 2017, 02:35

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

Сообщение IDoNotExist 06 фев 2018, 17:44

А Use Gravity на Rigidbody включена конечно же?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

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

Сообщение T116 06 фев 2018, 17:49

IDoNotExist писал(а):А Use Gravity на Rigidbody включена конечно же?

нет конечно. мне ж не надо гравитация глобальная, ее моделирует сам атрактор
T116
UNец
 
Сообщения: 38
Зарегистрирован: 28 янв 2017, 02:35

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

Сообщение IDoNotExist 06 фев 2018, 17:51

Тогда не понятно что у вас и куда стреляет, скрины хоть приложите чтоли.
Еще можно через Debug.DrawRay вывести силы которые передаёте на ригидбоди и её текущий Velocity. И посмотреть разницу, может у вас вообще что то направлено не туда куда вы думаете.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

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

Сообщение Cr0c 06 фев 2018, 17:56

Сила хоть в FixedUpdate?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

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

Сообщение T116 06 фев 2018, 18:02

Cr0c писал(а):Сила хоть в FixedUpdate?

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

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


да , мысль хорошая, сделаю посмотрим что получается.
Спасибо)
T116
UNец
 
Сообщения: 38
Зарегистрирован: 28 янв 2017, 02:35

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

Сообщение IDoNotExist 06 фев 2018, 18:03

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

Rigidbody.AddForce же идёт постоянно, следовательно сила постоянно накапливается, следовательно она будет стремиться к бесконечности, видимо гравитация будучи нелинейной слишком резко пропадает, что приводит к резкому накоплению силы в двигателе ракеты.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

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

Сообщение Cr0c 06 фев 2018, 19:29

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

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

Сообщение T116 07 фев 2018, 11:05

ну суть в том что мне особо не надо считать силы, только 1 ракета только 1 старт так по кругу.
Физику конечно я везде обсчитывая в Фикседе))
Я бы итеративно считал все силы на объекте, а потом давал силу телу в ригидбоди. И регистрировал тела где-нибудь в контроллере, который считал все силы всем телам и применял сам.
И кроме как в фикседе силу считать и применять - нигде нельзя.


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

http://prntscr.com/iba4yx это с отключенным атрактом. направление какое-то странное) если пройти несколько итерация в пошаговом режиме то ракета окажется сверху луча, а на старте она снизу
http://prntscr.com/iba5jb а это сила атрактора ракеты
T116
UNец
 
Сообщения: 38
Зарегистрирован: 28 янв 2017, 02:35


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6