2д платформер
|
|
dolt0n | Дата: Суббота, 29 Апреля 2017, 08:07 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| День добрый, товарищи. Как реализовать подкат? Нужно, чтобы персонаж проходил под препятствием по нажатию клавиши и выходил из этого состояния через время. Насколько я понимаю, делается это рейкастами, отключением\включением коллайдера или слоями. Но может есть что-то проще? Если можно с примером. Заранее благодарю.
|
|
| |
Vostrugin | Дата: Суббота, 29 Апреля 2017, 08:50 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Я бы сделал отключением и включением соответствующих коллайдер. По-моему это самый простой вариант.
|
|
| |
dolt0n | Дата: Суббота, 29 Апреля 2017, 09:06 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Ну это я понял. Я немного не понимаю как обратиться к нужному коллайдеру и отключить\включить его. Можно ли это проделать с коллайдером, висящем на игроке или нужно делать отдельный gameobject, цеплять на него коллайдер и kinematic regitbody? Да-да, я нубас:)
|
|
| |
Vostrugin | Дата: Суббота, 29 Апреля 2017, 10:03 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| У тебя будет объект с Rigidbody2d, назовём его Player. Два дочерних объекта, у одного будет коллайдер обычный, у второго коллайдер для подката. Коллайдер для подката изначально выключен. На объект Player вешаем скрипт обработки. В скрипте пишешь:
Код void Update() { if(Input.GetKeyUp("R")) { EnableTackleCollider(); StartCoroutine(EbableStayCollider(1f)); // 1f - длительность подката в секундах } }
IEnumerator EbableStayCollider(float delay) { yield return new WaitForSeconds(delay); EnableStayCollider(); }
void EnableStayCollider() { transform.Find("StayCollider").gameObject.SetActive(true); transform.Find("TackleCollider").gameObject.SetActive(false); }
void EnableTackleCollider() { transform.Find("StayCollider").gameObject.SetActive(false); transform.Find("TackleCollider").gameObject.SetActive(true); }
*Код приведён без нужных проверок, флагов и кеширования объектов.
Структура объекта: Player - StayCollider - TackleCollider
|
|
| |
dolt0n | Дата: Суббота, 29 Апреля 2017, 10:47 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Спасибо тебе огромное, мил человек! Плюсик в карму:) Один вопрос: если я этот фрагмент кода добавляю в общий controller, то фрагмент не работает, почему так? Отдельным скриптом все отлично.
Сообщение отредактировал dolt0n - Суббота, 29 Апреля 2017, 11:00 |
|
| |
Vostrugin | Дата: Суббота, 29 Апреля 2017, 13:44 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| dolt0n, нужен текст ошибки. Навскидку сложно сказать, возможно дублируется метод Update()?
|
|
| |
dolt0n | Дата: Суббота, 29 Апреля 2017, 14:13 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Ошибок никаких нет. Просто не работает. Не дублируется) Ладно, попробую разобраться. Еще раз спасибо:)
|
|
| |