Jump to content

Взаимодействие с GUI в VR. C#


photo

Recommended Posts

Здравствуйте.

Недавно начал изучать движок для использования в будущих проектах, хочу создать простое VR приложение. Скачивал VR Sample на C# и С++, однако в С# версии не нашел примера работы с GUI, с которым у меня возникли проблемы. Могу ли я используя Intersections взаимодействовать с GUI? Например нажать на WidgetButton.

Link to comment

Здравствуйте. Да Вы можете взаимодествовать с GUI с помощью Intersections, для этого нужно при создании ObjectGui или ObjectGuiMesh установить значение MouseMode в MOUSE_VIRTUAL например можно создать компоненту с таким методом Init и довать ее на ObjectGui в редакторе 

private void Init()
{
  	objectGui = node as ObjectGui;
  
  	// устанавливаем mouse mode
  	objectGui.MouseMode = ObjectGui.MOUSE_VIRTUAL;
  
  	// получаем экземпляр Gui  
  	gui = objectGui.GetGui();
  
  	// добавляем виджеты на этот Gui
  	// ...
}

Для того, что бы взаимодествовать с GUI, нужно сделать следующее:

Vec3 p0 = controller.WorldPosition + offset; // луч пускаем из контроллера при этом луч не должен пересекать контроллер, иначе Intersection будет находить именно контроллер как объект пересечения 
Vec3 direction = new Vec3(...) // направление луча
Vec3 p1 = p0 + direction * maxDistance; // конечная точка отрезка на котором будем проверять Intersection
Object hitObj =  World.GetIntersection(p0, p1, 1, intersection);

ObjectGui objGui = hitObj as ObjectGui; // пытаемся привести объект пересечения к ObjectGui

// если получилось, то устанавливаем значения в ObjectGui
if(objGui != null)
{
	objGui.SetMouse(p0, p1, mouseDown ? 1 : 0, false);
}

В метод ObjectGui.SetMouse нужно передать отрезок который пересекает его, точку пересечения он определит сам, значения нажата ли кнопка, в примере кода для этого используется булевая переменная mouseDown инициализировать ее можно как-нибудь так:

bool mouseDown = VRInput.IsGeneralButtonDown(VRInput.GeneralButtons.FIRE_1);

 и последний аргумент в методе это флаг, отвечающий за отображения курсора на ObjectGui.

  • Like 1
Link to comment
×
×
  • Create New...