Полезное

Мы Вконтакте

Discord канал

#
Пред.
Аватара пользователя
Пользователь
Сообщения: 19
Вот код включения тв на языке c#,он полностью работоспособен.Мне нужно его преобразовать в c++,но я не знаю систему(поверхносно знаю) обьектов в VS типа материалов(отдельная это библиотека или нет и тд)
Вот вообщем то код(С#):


public class InteractScript {
private bool enter;
public float interactDistance = 5f;
private bool enter1;
public Material[] ch;
public GameObject YB;
public MovieTexture moveTexture;
public MovieTexture movTexture2;
public int index = 0;
public AudioSource aud;
public AudioSource aud2;
}
void start(){

YB.GetComponent<Renderer>().material = ch[index];
}
public void Update()
{

if (Input.GetKeyDown(KeyCode.E)) {
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, interactDistance)) {
if (hit.collider.CompareTag("Door")) {
Debug.Log("ok");
hit.collider.transform.parent.GetComponent<DoorScript>().ChangeDoorState();
}
if (hit.collider.CompareTag("Door2")) {
hit.collider.transform.parent.GetComponent<DoorScript2>().ChangeDoorState();
}
}
}
if (Input.GetKeyDown(KeyCode.F)) {
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, interactDistance)) {
if (hit.collider.CompareTag("TV"))
{
YB = GameObject.Find("Plane002");
Debug.Log("ok");
index++;
if (index>2){
index = 0;
}
YB.GetComponent<Renderer>().material = ch[index];
if (index == 0){
moveTexture.Play();
aud.Play();

}
if (index == 1){

movTexture2.Play();
aud2.Play();
moveTexture.Stop();
aud.Stop();

}
if (index == 2){

movTexture2.Stop();
aud2.Stop();
}


}
}
}
}
}



Буду крайне благодарен,заодно разберусь во многих вещах в unrial.
Последний раз редактировалось Dragon Hunter 16 ноя 2015, 17:30, всего редактировалось 2 раз(а).
Аватара пользователя
Пользователь
Сообщения: 474
Тебе лучше отдельно сделать класс "телевизора" (вообще проще и удобнее подобный минимум через блупринт реализовать,я про телевизор) - что бы он реагировал на определенные события (например ему будет передаваться включение/отключение как у тебя).
Трассировку/RayCast - тоже можно делать через блупринт как в твоем случае ,то от pawn'а , я обычно тестирую в блупринте ,а потом в код уже перевожу ,если в С++ то можно в доках по поводу RayCast'а почитать ,но там есть некоторые подводные камни,о которых желательно знать(но для твоего случая не обязательно)
Как сделать RayCast через блупринт :
https://docs.unrealengine.com/latest/IN ... index.html
Как сделать через С++ ,взято с вики UE4:
Код:
//~~~~~~~~~~~~
 
   FVector Start   = GetActorLocation();
   FVector End    = Start + GetActorRotation().Vector() * 10240;
 
   FCollisionQueryParams TraceParams(FName(TEXT("VictoreCore Trace")), true, this);
   TraceParams.bTraceComplex = true;
 
   //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   // Focus of this wiki, telling UE4 we want the UV info!
   TraceParams.bReturnUV = true;
   //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   //Ignore Actors
   TraceParams.AddIgnoredActor(this);
 
   //Trace!
        FHitResult HitOut;
   GetWorld()->LineTraceSingle(
      HitOut,      //result
      Start,   //start
      End , //end
      ECC_Pawn, //collision channel
      TraceParams
   );
 


Что касается смены материалов,ну и в целом визуальных эффектов(вращение,смещение текстуры и тд и тп) - то посмотри несколько простеньких уроков по этой теме - не обязательно все в С++ переводить ,так как порой не всегда удобно.Лучше балансировать между С++ и Блупринтами
Аватара пользователя
Пользователь
Сообщения: 19
Насчет того что Цитата:"(вообще проще и удобнее подобный минимум через блупринт реализовать,я про телевизор) - что бы он реагировал на определенные события (например ему будет передаваться включение/отключение как у тебя)."

Это к сожалению не возможно тк. функция media player в bluprint не работает ни в какой вариации(проверены все варианты и разрешение видео и логика так ,что я в этом на 99% уверен)
Вот тема и на нее так и не нашлось ответа(разработчики не хотят фиксить) Вот ссылка: viewtopic.php?f=3&t=1855 и вот еще тема(там реализован телевизор через bluprint и кстати эти темы мои прост аккаунт сменил =) )Ссылка: viewtopic.php?f=3&t=1750
Так что единственный шанс с++.
P.S.Zhernovoy Sergey как думаешь можно реализовать media player(аналог но работающий) через с++ как нибудь и в bluprint его выполнять
(или в с++ это ну суть важно)?
Аватара пользователя
Пользователь
Сообщения: 295
Dragon Hunter писал(а):
Это к сожалению не возможно тк. функция media player в bluprint не работает ни в какой вариации(проверены все варианты и разрешение видео и логика так ,что я в этом на 99% уверен)

Вот уроки как видеотекстуры использовать, уверен на 100%, что с помощью блупринта можно реализовать телевизор и переключение каналов.
https://www.youtube.com/watch?v=4xTJq1hTPG0
https://www.youtube.com/watch?v=8mQ06kyNGag
Аватара пользователя
Пользователь
Сообщения: 19
Вы не правильно меня поняли я говорил про эту функцию а не про само видео(которое автоматически будет играть,мне нужно именно переключение каналов)Скрин:Изображение


В этом видео не используется эта функция,если не верите погуглите и на иностранных форумах ue4 увидите ,что решения проблемы нет.Конечно у вас на ПК будт работать переключение каналов даже если запаковать,но если вы отправите например другу игру и он подойдя к телевизору(в игре) включит его,он работать НЕ БУДЕТ!!! и я это проверил на 18 компютерах с совершенно разной конфигурацией.
Аватара пользователя
Пользователь
Сообщения: 295
Блупринт это язык программирования, можно без проблем сделать не только переключение канала, но и старт телевизора в космос по переключению канала, Вы просто не разобрались, наверняка способов реализовать вашу задачу - масса.
Аватара пользователя
Пользователь
Сообщения: 19
Наверное вы правы,но уроки делают(если делают,но очень редко) только по этому способу(вот почти вся логика)Изображение

+

Изображение
Видео то работает и переключается но на других системах(упакованный проект на других пк) эта функция или не срабатывает или все не срабатывает,и не понятно почему.А на иностранных форумах эпики говорят что эта проблема есть и это все же эксперементальная функция и не работает.Это они говорили когда было 4.6
Аватара пользователя
Пользователь
Сообщения: 295
эту логику частично делал вам я еще во времена отсутствия многих знаний, этот способ лучше

Изображение

или так

Изображение

в любом случае если у вас не получилось, вы просто не использовали все возможности.
Аватара пользователя
Пользователь
Сообщения: 19
Как бы у меня работает эта логика(если б моя логика была не правильна она б не работала и у меня)но когда я упакую проект(в exe как настоящую игру) кину его на тестирование на другую систему(где не стоит ue4) телевизор не будет работать(упаковка ,разрешение видео(360p) правильные) Играет только звук и переключается правильно ,что доказывает правильность и работоспособность этой логики,но вы правы она массивная и ваша лучше я не спорю.
Аватара пользователя
Пользователь
Сообщения: 19
Проблемки((( эта проблема уже давно и все повторяется,вскоре все замолчат из за безысходности
Последний раз редактировалось Dragon Hunter 16 ноя 2015, 16:59, всего редактировалось 1 раз.


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

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