Проблема с Коллайдерами - Форум Игроделов
Чт, 02 Май 2024, 10:25 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Проблема с Коллайдерами
Проблема с Коллайдерами
KriatonuSДата: Вт, 29 Сен 2015, 12:27 | Сообщение # 1
Нет аватара
 
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Суть в следующем. Есть объект - космический корабль на нем бокс коллайдер и скрипт управления. Есть астероид, тоже с коллайдером.
Корабль управляется от нажатия мышки по карте и летит к нужной точке. Но он мило проходит насквозь астероида игнорирую коллайдеры.
Подскажите - возможно есть особенность в просчетах коллайдеров из-за движения объектов при помощи скриптов.
Перепробовал все. До тех пор, пока не вешаю на объекты скрипты - физика срабатывает.
Заранее благодарен.
 
СообщениеСуть в следующем. Есть объект - космический корабль на нем бокс коллайдер и скрипт управления. Есть астероид, тоже с коллайдером.
Корабль управляется от нажатия мышки по карте и летит к нужной точке. Но он мило проходит насквозь астероида игнорирую коллайдеры.
Подскажите - возможно есть особенность в просчетах коллайдеров из-за движения объектов при помощи скриптов.
Перепробовал все. До тех пор, пока не вешаю на объекты скрипты - физика срабатывает.
Заранее благодарен.

Автор - KriatonuS
Дата добавления - 29 Сен 2015 в 12:27
VolkOrievithДата: Вт, 29 Сен 2015, 14:08 | Сообщение # 2
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Дак у вас скрипт корабля на transform построен. На астероиде rigidbody есть? Коллизия происходит только если на одном из коллайдеров, или на их предке висит rigidbody. Если да, проверьте, не стоят ли галочки на "isTrigger" на коллайдерах.
"возможно есть особенность в просчетах коллайдеров"
Только по Layer'ам. Можно отключить коллизию между Layer'ами в настройках или из скрипта.
Если у вас нет rigidbody ни на астероиде, ни на корабле, добавьте его на астероид. Если тот должен двигаться, и движение контроллирует скрипт, замените движение через transform.position на rigidbody.velocity (скорость vector3)
 
СообщениеДак у вас скрипт корабля на transform построен. На астероиде rigidbody есть? Коллизия происходит только если на одном из коллайдеров, или на их предке висит rigidbody. Если да, проверьте, не стоят ли галочки на "isTrigger" на коллайдерах.
"возможно есть особенность в просчетах коллайдеров"
Только по Layer'ам. Можно отключить коллизию между Layer'ами в настройках или из скрипта.
Если у вас нет rigidbody ни на астероиде, ни на корабле, добавьте его на астероид. Если тот должен двигаться, и движение контроллирует скрипт, замените движение через transform.position на rigidbody.velocity (скорость vector3)

Автор - VolkOrievith
Дата добавления - 29 Сен 2015 в 14:08
KriatonuSДата: Вт, 29 Сен 2015, 19:28 | Сообщение # 3
Нет аватара
 
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Спасибо за советы. Сейчас буду разбираться в причине.

Добавлено (29 Сен 2015, 19:28)
---------------------------------------------
Я разобрался. Помог совет с rigidbody, но только повесив его на корабль. И осталась последняя проблема. При столкновениях с объектами - корабль получает не скриптовое ускорение при отталкивании. Есть возможность "стабилизировать" объект в пространстве и вернуть полный контроль скрипту над его положением и перемещением?

 
СообщениеСпасибо за советы. Сейчас буду разбираться в причине.

Добавлено (29 Сен 2015, 19:28)
---------------------------------------------
Я разобрался. Помог совет с rigidbody, но только повесив его на корабль. И осталась последняя проблема. При столкновениях с объектами - корабль получает не скриптовое ускорение при отталкивании. Есть возможность "стабилизировать" объект в пространстве и вернуть полный контроль скрипту над его положением и перемещением?


Автор - KriatonuS
Дата добавления - 29 Сен 2015 в 19:28
VolkOrievithДата: Ср, 30 Сен 2015, 16:51 | Сообщение # 4
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Есть переменные Drag и AngluarDrag в rigidbody. Drag - сопротивление воздуха (как мне кажется). Гасит скорость. AngluarDrag - то же самое, только гасит вращение.
Чтобы вернуть корабль в равновесие, можно использовать все тот же
Ship.transform.Rotate(0, 0, 0); и Vector3.Normalize(вектор).ось * Time.deltaTime * 5
то есть
Код

Ship.transform.Rotate(Vector3.Normalize(Ship.transform.forward).y * Time.deltaTime * 5, 0, Vector3.Normalize(Ship.transform.right).y * Time.deltaTime * 5);

Я точно не помню, возможно вместо "Ship.transform.forward" нужно написать "-Ship.transform.forward" и вместо "Ship.transform.right" написать "-Ship.transform.right", но это можно проверить опытным путем. Если корабль всплывет кверху брюхом, нужно где-то поменять знак +- ))
 
СообщениеЕсть переменные Drag и AngluarDrag в rigidbody. Drag - сопротивление воздуха (как мне кажется). Гасит скорость. AngluarDrag - то же самое, только гасит вращение.
Чтобы вернуть корабль в равновесие, можно использовать все тот же
Ship.transform.Rotate(0, 0, 0); и Vector3.Normalize(вектор).ось * Time.deltaTime * 5
то есть
Код

Ship.transform.Rotate(Vector3.Normalize(Ship.transform.forward).y * Time.deltaTime * 5, 0, Vector3.Normalize(Ship.transform.right).y * Time.deltaTime * 5);

Я точно не помню, возможно вместо "Ship.transform.forward" нужно написать "-Ship.transform.forward" и вместо "Ship.transform.right" написать "-Ship.transform.right", но это можно проверить опытным путем. Если корабль всплывет кверху брюхом, нужно где-то поменять знак +- ))

Автор - VolkOrievith
Дата добавления - 30 Сен 2015 в 16:51
KriatonuSДата: Чт, 01 Окт 2015, 14:40 | Сообщение # 5
Нет аватара
 
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Большое спасибо - буду пробовать
 
СообщениеБольшое спасибо - буду пробовать

Автор - KriatonuS
Дата добавления - 01 Окт 2015 в 14:40
Форум Игроделов » UNITY3D » СКРИПТИНГ » Проблема с Коллайдерами
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024