Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73

Взаимодействие объектов при одновременном движении навстречу

09.01.2018, 21:59. Показов 2191. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть проблема взаимодействия 2д обьектов. вообщем есть 2 игрока, к ним подвьязан rigidbody2d и poligon collider. при движении одного из них, взаимодействие правильное, он толкает игрока 2 или же не проходит через другие текстуры. Но при одновременном движении навстречу они проскакивают друг через друга. Каким образом можно исключить такое действие?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2018, 21:59
Ответы с готовыми решениями:

Дёрганье камеры при одновременном движении и повороте
Пытаюсь сделать игру от первого лица. Вращение камеры я реализовал так Код LevelStruct.Vector eyeLook = new...

Как избежать смены 3d вида при движении объектов?
если применить к объекту rotationX,Y,Z - и потом изменять его координаты - то и этот вид меняется из за его движения относительно центра. ...

Можно ли обеспечить взаимодействие программно созданных объектов и объектов, созданных мастером
Здравствуйте. Изучаю C# и ADO.NET и столкнулся с одной серьезной проблемой, которая мешает комфортно программировать. Часто...

15
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
10.01.2018, 11:40
а каким образом вы их двигаете? код взаимодействия и передвижения в студию..
если через прямое изменение координат, то возможно вы не делаете проверок
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
11.01.2018, 16:15  [ТС]
согласен, проверок не делаю, поскольку до этого момента думал, что все данные проверки unity делает автоматически, через статические же обьекты не дает ходить.
вот код движений игрока 1

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void Update () { 
        Data.cadr1++;
        Data.position_y1 = rb.position.y;
        if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5f)
        {
            transform.Translate(new Vector3 (Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime,0f,0f));
            if ((rb.position.y > -2 || onground == false) && Data.position_y1 < Data.position_y1_last) //если игрок в полете и идет в сторону то увеличить скорость падения
                rb.gravityScale = 4;
            else
                rb.gravityScale = 3;
        }
        if (Input.GetKeyDown(KeyCode.W) && onground == true && Data.jump1 + 40 <= Data.cadr1) //если игрок нажал прыжок, находиться на земле и прошел определенный интервал времени (для невозможности нажать 2 и более раза прыжка за одну итерацию update) 
        {
            Data.jump1 = Data.cadr1;
            onground = false;
            rb.AddForce(Vector2.up * 10000);
        }
        if (rb.position.y <= -2)
            onground = true;
        anim.SetFloat("MovePlayer1Left", Input.GetAxisRaw("Horizontal"));
        anim.SetFloat("Jump" , Input.GetAxisRaw("Vertical"));
        Data.position_y1_last = Data.position_y1;
    }
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
12.01.2018, 11:47
Столкновения - это физика. Транслейтом всегда будет глючить.
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
12.01.2018, 20:39  [ТС]
окей, какое еще есть решение тогда?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
12.01.2018, 22:36
Двигать через Rigidbody.velocity
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
17.01.2018, 00:13  [ТС]
теперь вот вторая проблема, персонаж перестает двигаться. По логам все хорошо, видно что кнопка нажата, анимация идет, но вот персонаж по х не двигаеться, вот какие варианты юзал, результат один и тот же
C#
1
2
3
4
5
6
7
//1 вариант
rb.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f);
//2 варинт
 if (move < 0)
                    rb.AddForce(Vector2.left *moveSpeed * Time.deltaTime);
                if(move > 0)
                    rb.AddForce(Vector2.right *moveSpeed * Time.deltaTime);
Предоставьте пожалуйста либо рабочий какой-то пример или же в чем может быть проблема у меня
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
17.01.2018, 02:44
C#
1
rb.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * moveSpeed, 0f);
Скорость и так в юнит/сек, зачем её ещё умножать на дельту?
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
17.01.2018, 11:03
Цитата Сообщение от Cr0c Посмотреть сообщение
C#Выделить код
rb.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * moveSpeed, 0f);
Скорость и так в юнит/сек, зачем её ещё умножать на дельту?
Time.deltaTime используется для того чтобы не зависеть от скорости компьютера
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
17.01.2018, 11:15
f3hler, это не транслейт, тут и так по FixedTime размазано. Или напомнить, что физика тикает по своему таймеру и скорость - это не прямое изменение координат?
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
18.01.2018, 00:46  [ТС]
в любом случае решение я так и не получил пока)
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
18.01.2018, 11:47
трудно в чем то помогать, если не видно что не работает.
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
19.01.2018, 01:21  [ТС]
постараюсь пояснить. есть персонаж, к которому подвязаны rigidbody2d, poligon collider2d и скрипт на движение. стоит данный персонаж на box collider 2d. Вообщем двигается только через transform.Translate, другие методы почему то не работают. Проверял значение Input.GetAxisRaw("Horizontal"), оно работает правильно, то есть реагирует на нажатие, но двигает только через Translate, Rigidbody2d.velocity и Rigidbody2d.AddForce не передвигают персонажа, но при этом Rigidbody2d.AddForce реагирует на прыжки. Примеры как конкретно использую Rigidbody2d.AddForce и Rigidbody2d.velocity бросал выше. Буду благодарен за любой дельный совет!)
0
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
19.01.2018, 07:29
В стандарных ассетах есть 2d проект посмотрите его. Там через rigidbody пепедвижение.
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
19.01.2018, 20:22  [ТС]
есть решение. для velocity значение параметра скорости 6 при весе 10 было слишком мало(хотя для Translate этого было как раз достаточно), оптимальное движение получилось при скорости 300.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
19.01.2018, 20:30
Масса влияет на AddForce, на velocity - никак.

Добавлено через 1 минуту
И не забывайте, что физика тикает на 50 фпс, а апдейт может и на 100+ фпс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2018, 20:30
Помогаю со студенческими работами здесь

Действие при одновременном выборе из 2 select
Приветствую, есть форма и есть скрипт, который скрывает &quot;text1&quot; и &quot;text2&quot; и при выборе &quot;позиции 3&quot; или &quot;позиции 4&quot;...

Ошибка при одновременном подключении windows.h и algorithm.h
Здравствуйте. Возникла ошибка следующего рода, при одновременном подключении windows.h и algorithm.h возникает конфликт между макросом max...

Ошибка при одновременном использовании двух условий If
Добрый день! Извините, если вопрос глупый - раньше не писала программы. Подскажите, пожалуйста, в чем может быть ошибка. Для...

Ошибка при одновременном создании двух ADO.Connection. Help!!!!
Создаю коннекшион Set objConn = Server.CreateObject('ADODB.Connection') objConn.Open 'Provider=Microsoft.Jet.OLEDB.4.0; ' &amp; _ ...

Потокобезопасность при одновременном pop_front и push_back std::list
Есть std::list. Поток &quot;потребитель&quot;, если size() &gt; 1 забирает front() и делает pop_front(). Поток &quot;поставщик&quot;, пока size() &lt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru