Unreal Engine 4
http://uengine.ru/forum/

Не срабатывает событие при создании BP Interface
http://uengine.ru/forum/viewtopic.php?f=3&t=13290
Страница 1 из 2

Автор:  unreal4 [ 16 фев 2018, 17:32 ]
Заголовок сообщения:  Не срабатывает событие при создании BP Interface

Всем привет!
Решаю задачу, вроде все правильно сделал, но не срабатывает событие. Итак, есть персонаж PlayerCharacter и стреляющая по нему пушка BP_Pushka. Пушка прекращает палить по персонажу, если тот умер. Для этого я создал:

1. MyInterface с функцией playerlife
(рис. 1)
Изображение

2. В PlayerCharacter'е вызвал сообщение playerlife из созданного ранее MyInterface и создал переменную GunFire c типом переменной BP_Pushka.
(рис.2).
Изображение

3. В BP_Pushka добавил MyInterface и создал событие EventPlayerlife.
(рис.3)
Изображение

4. Запускаю игру с проверкой, в PlayerCharacter'е проходит блок playerlife и далее по списку
(рис.4)
Изображение

Но событие EventPlayerlife внутри BP_Pushka так и не срабатывает (рис.3). Не могу понять в чем ошибка. Буду благодарен любому совету.
Спасибо!

Автор:  Prytaleks [ 17 фев 2018, 04:00 ]
Заголовок сообщения: 

не срабатывает так как в ссылку GunFire ничего не записано, по крайне мере я не вижу скрина, где ты в эту ссылку что то записываешь

Автор:  unreal4 [ 17 фев 2018, 16:45 ]
Заголовок сообщения: 

Переменная GunFire c типом переменной BP_Pushka. Т.е. я думал, что после прохода блока playerlife внутри PlayerCharacter, ссылка будет переносить логику в блупринт BP_Pushka. А этого не произошло.

Автор:  Prytaleks [ 17 фев 2018, 18:50 ]
Заголовок сообщения: 

пофиг твой тип переменных, а если у тебя 50 пушек на сцене, и три у персонажа, какой конкретно пушке будет вызываться евент?, можно указать тип переменной Actor, будет тоже самое.

В переменную(GunFire) запиши пушку, либо когда ты ее спавнишь, либо путь она себя(Self) на бегин плее запишет в GunFire

Автор:  unreal4 [ 19 фев 2018, 23:05 ]
Заголовок сообщения: 

Спасибо, но предложенное решение больше подходит для каста (Cast to...). У меня на уровне условно 50 пушек, каждая из которых срабатывает, если персонаж в зоне видимости, если нет, то она не стреляет. Как сделать так, что после смерти персонажа пушка, в зоне видимости которой он находился, перестала палить. Заранее благодарю.

Автор:  Prytaleks [ 20 фев 2018, 06:34 ]
Заголовок сообщения:  Re:

unreal4 писал(а):
Спасибо, но предложенное решение больше подходит для каста (Cast to...). У меня на уровне условно 50 пушек, каждая из которых срабатывает, если персонаж в зоне видимости, если нет, то она не стреляет. Как сделать так, что после смерти персонажа пушка, в зоне видимости которой он находился, перестала палить. Заранее благодарю.


интерфейс и каст, работают идентично, по крайне мере и там и там нужна конкретная ссылка.

Пушка может сама перед каждым выстрелом проверять, жива ли ее цель(у меня так боты делают), либо по циклу дать команду всем пушкам прекратить стрельбу, либо активные пушки) записывай в какой нибудь массив(ссылки "активных пушек", и так же по циклу дай им команду прекратить стрельбу.

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

Автор:  unreal4 [ 20 фев 2018, 23:57 ]
Заголовок сообщения:  Re: Re:

Prytaleks писал(а):

интерфейс и каст, работают идентично, по крайне мере и там и там нужна конкретная ссылка.



Спасибо за помощь, но разве не Интерфейс, в отличии от каста, может подвязываться к любому объекту, с которым произошло столкновение?

Например переменная с типом other из Event Hit (урок Flakky по BP_Interface). Поэтому я прибег к Интерфейсу, чтобы была возможность связать событие между n-ой пушкой и персонажем.

Вчера при помощи интерфейса решил другую задачу - Открывание двери определенным ключом. Там все просто, ключ записывается через пересечения коллизий ключа с персонажем. С типом переменной other actor и вносится в массив самого персонажа через вызываемое событие. А у двери также через коллизию c типом переменной other actor проверяется, тот ли ключ находится в массиве персонажа.

Т.е. коммуникация между блупринтами происходит, причем без конкретной ссылки (это я про other). Поэтому у персонажа есть возможность собрать n-е количество ключей и ни к кому не каститься по отдельности. (см рис.)


Изображение Изображение

Но как быть с пушкой, ее ядром (projectile) и персонажем я не догоняю? Спасибо!

Автор:  Prytaleks [ 21 фев 2018, 08:23 ]
Заголовок сообщения: 

Other Actor и есть конкретная ссылка, каст будет работать идентично. Если БП один, каста будет достаточно, если блюпринтов вагон, тогда нужен интерфейс обязательно.

String ты используешь весьма коряво, там хватило бы енуменатора или интежера, YellowKey, и yellowkey, это поидее разные значения.

Автор:  Prytaleks [ 21 фев 2018, 08:36 ]
Заголовок сообщения:  Re: Re:

unreal4 писал(а):
Но как быть с пушкой, ее ядром (projectile) и персонажем я не догоняю? Спасибо!


объясни процесс возникновения пушки, ты ее спавнишь?, она лежит на сцене по умолчанию?, или как?

Автор:  unreal4 [ 21 фев 2018, 12:18 ]
Заголовок сообщения: 

Насколько я понимаю, спавнить пушку надо, когда готова логика генерации уровня. Пока я просто выставляю пушку на уровень, проверяя как работает логика взаимодействия между объектами. Благодарю.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/