Гравитация планет в Unity 3D [Tutorial] (Часть 1/2) - как в KSP

Гравитация планет в Unity 3D [Tutorial] (Часть 1/2) - как в KSP

Emerald Powder

5 лет назад

29,939 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@alicewithalex
@alicewithalex - 25.01.2019 19:41

Очень неплохо) Было бы круто ещё контроллер от 3 лица написать для персонажа)

Ответить
@Ilk0nst174
@Ilk0nst174 - 19.03.2019 21:32

мля классно! годно подписка

Ответить
@nikitakovalev6432
@nikitakovalev6432 - 13.08.2019 10:51

Дружище, большое спасибо за видео. Узнал больше чем за за любой плейлист о создании игры

Ответить
@ДавлатВолодин-ж1г
@ДавлатВолодин-ж1г - 18.08.2019 18:31

Большое Вам спасибо.

Ответить
@nimoF
@nimoF - 19.10.2019 19:13

Здравствуй, скажи а не хочешь ли ты поучаствовать в инди проекте на долевой основе? С офигенной идеей, революция в игрострое

Ответить
@Atlez1
@Atlez1 - 16.12.2019 12:34

Класс ты лучший ютубер по юнити

Ответить
@ИванБаранов-э3ш
@ИванБаранов-э3ш - 22.12.2019 18:23

Спасибо за видео. Есть ли возможность, получить скрипт для Gun?
Пытаюсь реализовать подобное, но не выходит

Ответить
@simssimstrec7512
@simssimstrec7512 - 13.01.2020 23:44

Люди желаю знать! Как в KSP сделали сборку, частей корабля в одно целое.

Ответить
@MEN97Wolf
@MEN97Wolf - 18.01.2020 14:35

Топ видео, спс за весьма полезную инфу)

Ответить
@hntrgg
@hntrgg - 27.03.2020 23:16

а можно ли этот скрипт переписать на 2d версию?

Ответить
@ionegamer
@ionegamer - 01.04.2020 14:45

Где ты раньше был!?
Это то, что нужно
👍👍👍

Ответить
@themihanoid5020
@themihanoid5020 - 07.04.2020 04:50

Осмелюсь быть первым, кто поставил диз этому видео по причине того, что в заголовке "как в КСП", в видео - "как в злых птицах" и "не совсем как в КСП", что на деле значило "совсем не как в КСП". Называйте вещи своими именами.

Ответить
@GameWorldMrKIller
@GameWorldMrKIller - 26.04.2020 21:02

Видео классное очень, но мой девиз простой, зачем что то расчитывать. если можно сделать анимацию :D

Ответить
@ironoscar3948
@ironoscar3948 - 09.05.2020 20:30

Приливы работают по-другому в реальности, но этот ролик все равно 10 из 10. Просто топ.

Ответить
@vikfide1550
@vikfide1550 - 31.05.2020 15:27

У меня отрицательный эффект, планеты отталкиваются :D

Ответить
@BorisAverin
@BorisAverin - 17.09.2020 12:24

Очень понравилось

Ответить
@Science-Reality
@Science-Reality - 19.10.2020 13:07

Динамические тела не могут быть ConcaveShape не и за производительности, а и за того что до сих пор никто не придумал алгоритм для двух движущихся не випуклих объектов. Эдинственое решение розбить не выпуклый объект на групу выпуклых, вот и всё!

Ответить
@Grapeoff
@Grapeoff - 08.12.2020 05:40

Динамика и кинематика — сила!

Ответить
@AzDzelo
@AzDzelo - 09.12.2020 11:35

ОГОНЬ!!! Видео с реальной реализацией механик - самые лучшие и полезные! Ты супер понятно и без шелухи объясняешь тему! Спасибо!

Ответить
@Prowler100
@Prowler100 - 20.02.2021 01:52

Круто! Респект

Ответить
@goodcontent-gcrussian4435
@goodcontent-gcrussian4435 - 24.02.2021 14:53

В КСП планеты двигаются по скрипту, физика действует только на корабли, и то у них нет притяжения(по понятным причинам)

Ответить
@Red1ska
@Red1ska - 27.03.2021 22:24

У меня отталкивается

Ответить
@Red1ska
@Red1ska - 27.03.2021 22:28

Доброго времени суток, у меня нобоборот оттягивает

Ответить
@BigPapochka12
@BigPapochka12 - 07.04.2021 09:58

Ну такое. Тела притягиваются и славу богу как говориться на этом мы и закончим...Вы говорите, что для таких целей лучше делать свою физику, хотя Вы даже не использовали всю физику объектов, а даже считали силу через float....

Ответить
@softwet4341
@softwet4341 - 15.04.2021 07:39

это константа из видео гравитационная постоянная 6,67e-11

Ответить
@ВалерийКалиновский-э2в
@ВалерийКалиновский-э2в - 19.05.2021 21:54

Для 2D тел изменил скрипт вот так. Только-только начал изучать скрипты, так что буду рад, если укажите ошибки и почему объект с ridgitbody2D не притягивается, а притягиваются только планеты друг к другу.


using System.Collections.Generic;
using UnityEngine;

public class Gravity : MonoBehaviour
{
private HashSet<Rigidbody2D> affectedBodies = new HashSet<Rigidbody2D>();
private Rigidbody2D componentRigidbody;


private void Start()
{
componentRigidbody = GetComponent<Rigidbody2D>();
}

private void OnTriggerEnter2D(Collider2D other)
{
if (other.attachedRigidbody != null)
{
affectedBodies.Add(other.attachedRigidbody);
}
}

private void OnTriggerExit2D(Collider2D other)
{
if (other.attachedRigidbody != null)
{
affectedBodies.Remove(other.attachedRigidbody);
}
}

private void FixedUpdate()
{
foreach (Rigidbody2D body in affectedBodies)
{
Vector2 forceDirection = ((Vector2)transform.position - body.position).normalized;
float distanceSqr = ((Vector2)transform.position - body.position).sqrMagnitude;
float strength = 10 * componentRigidbody.mass * body.mass / distanceSqr;

body.AddForce(forceDirection * strength);
}
}
}

Ответить
@47syorha52
@47syorha52 - 14.08.2021 17:12

Ну, в KSP есть симуляция только взаимодействия двух тел. Впрочем, этого игре вполне хватает

Ответить
@RandomPerson-gy3ql
@RandomPerson-gy3ql - 03.10.2021 13:38

В ксп всё поделено на зоны влияния - где-то притягиваешься к солнцу, где-то к планетам, где-то относительно поверхности планет, в зависимости к чему ближе. У самих планет траектории захардкожены + у летательных аппаратов они просчитываются только в момент изменения скорости для минимизации погрешностей и экономии ресурсов. Собственно поэтому в атмосфере они меняются постоянно, потому что постоянно действует сопротивление воздуха

Ответить
@NickProkhorenko
@NickProkhorenko - 31.10.2021 23:03

А как мне сделать гравитацию, скажем, для дождя, молний и снега на сферическом объекте? Прописать гравитаю для игрока это ясно, а вот для погодных явлений не совсем...

Ответить
@00main_master
@00main_master - 28.11.2021 16:10

я который в***ался в муну когда летел на минмус

Ответить
@mn4840
@mn4840 - 10.12.2021 10:37

а как сделать пушку стреляющую шарами как в этом видео?

Ответить
@ThisisWiossiN
@ThisisWiossiN - 21.12.2021 00:25

Начал за angry birds, кончил за ksp :D

Ответить
@Daragni
@Daragni - 14.02.2022 04:15

туплю. как переделать скрипт для 2д планеты?

Ответить
@ВіталікБритан-х7ч
@ВіталікБритан-х7ч - 01.04.2022 15:54

Классно, но как в ксп это мне кажется перебор) Там наверное гароздо реалистичнее(Я видео не смотрел ещё, но предполагаю)

Ответить
@tokiiskirukav
@tokiiskirukav - 13.04.2022 11:55

Помогите пожалуйста
Скрипт отличный работает Но есть проблема когда удаляешь объект с риджидбоди то происходит ошибка и скрипт перестаёт работать если что когда запущен проект
Ошибка : MissingReferenceException: Объект типа 'Rigidbody' был уничтожен, но вы все еще пытаетесь получить к нему доступ.
Ваш скрипт должен либо проверить, имеет ли он значение null, либо вы не должны уничтожать объект.
Единый двигатель.Rigidbody.get_position () (при <458edbc5053d4539859fb32ae8dd8145>:0)
Планета.Исправлено обновление () (в Assets/Skripts На РУССКОМ ПЕРЕВЕЛ

Вот тот скрипт из видео:

using System.Collections.Generic;
using UnityEngine;

public class Planet : MonoBehaviour
{
public float Gravity;
private HashSet<Rigidbody> affectedBodies = new HashSet<Rigidbody>();
private Rigidbody componentRigidbody;

private void Start()
{
componentRigidbody = GetComponent<Rigidbody>();
}

private void OnTriggerEnter(Collider other)
{
if (other.attachedRigidbody != null)
{
affectedBodies.Add(other.attachedRigidbody);
}
}

private void OnTriggerExit(Collider other)
{
if (other.attachedRigidbody != null)
{
affectedBodies.Remove(other.attachedRigidbody);
}
}

private void FixedUpdate()
{
foreach (Rigidbody body in affectedBodies)
{
Vector3 forceDirection = (transform.position - body.position).normalized;
float distanceSqr = (transform.position - body.position).sqrMagnitude;
float strength = Gravity * componentRigidbody.mass * body.mass / distanceSqr;

body.AddForce(forceDirection * strength);
}
}
}

ПОМОГИТЕ ОЧЕНЬ ПРОШУ

Ответить
@МупупмумаМвумпвам
@МупупмумаМвумпвам - 25.09.2022 11:43

Сделал все как видео гравитацию. Но после появление клонов объектов пишет ошибки. А те объекты которые появились не притягиваются. А в видео там видно что там появляются копия объектов и спокойно притягиваются

Ответить
@saasrus
@saasrus - 12.10.2022 22:14

Поставил лайк когда физика переехала в fixedUpdate. Делал 2д симуляцию движения по орбите, формула там простая, и врятли используя c# можно сделать расчёты точнее (при попытке включить повышенную точность в процессоре код перестаёт быть безопасным). У меня сначала вычислялась сумма квадратов относительных координат (квадрат магнитуды если правильно понимаю), его мы берём в минус первой, либо просто в знаменатель суём в формуле; в числитель идёт нормализованный вектор умноженный на массу или силу гравитации. И получаем вектор который плюсуется к скорости. Как-то так.

Ответить
@goosemihwot
@goosemihwot - 19.10.2022 01:41

А как скачать такие планети?

Ответить
@legotechnicbuilderua7692
@legotechnicbuilderua7692 - 06.11.2022 09:58

планета не упадет, так как когда она подлетит на близкое расстояние, ее скорость увеличиться в разы, и ее откинет центробежная сила (работает только если берётся магнитуда в квадрате).

Ответить
@mishpro_off
@mishpro_off - 22.11.2022 15:27

Сделай гайд на пушку, не получается, чтобы пушка смотрела на мышь

Ответить
@iceshott8506
@iceshott8506 - 26.12.2022 06:40

Помогите, объекты отталкиваются от планеты

Ответить