Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 77
Всем привет!
Решаю задачу, вроде все правильно сделал, но не срабатывает событие. Итак, есть персонаж 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). Не могу понять в чем ошибка. Буду благодарен любому совету.
Спасибо!
Аватара пользователя
Пользователь
Сообщения: 4069
не срабатывает так как в ссылку GunFire ничего не записано, по крайне мере я не вижу скрина, где ты в эту ссылку что то записываешь
Аватара пользователя
Пользователь
Сообщения: 77
Переменная GunFire c типом переменной BP_Pushka. Т.е. я думал, что после прохода блока playerlife внутри PlayerCharacter, ссылка будет переносить логику в блупринт BP_Pushka. А этого не произошло.
Аватара пользователя
Пользователь
Сообщения: 4069
пофиг твой тип переменных, а если у тебя 50 пушек на сцене, и три у персонажа, какой конкретно пушке будет вызываться евент?, можно указать тип переменной Actor, будет тоже самое.

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


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

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

p.s. интерфейс актуален если ты активно используешь наследования, если у тебя по факту один блюпринт, использование интерфейса лично мне, делает процессы взаимодействия между блюпринтами менее удобным.
Аватара пользователя
Пользователь
Сообщения: 77
Prytaleks писал(а):

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



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

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

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

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


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

Но как быть с пушкой, ее ядром (projectile) и персонажем я не догоняю? Спасибо!
Аватара пользователя
Пользователь
Сообщения: 4069
Other Actor и есть конкретная ссылка, каст будет работать идентично. Если БП один, каста будет достаточно, если блюпринтов вагон, тогда нужен интерфейс обязательно.

String ты используешь весьма коряво, там хватило бы енуменатора или интежера, YellowKey, и yellowkey, это поидее разные значения.
Аватара пользователя
Пользователь
Сообщения: 4069
unreal4 писал(а):
Но как быть с пушкой, ее ядром (projectile) и персонажем я не догоняю? Спасибо!


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


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница