Unity Steam VR, как ссылаться на текущий удерживаемый объект? - PullRequest
0 голосов
/ 06 марта 2019

В моем сценарии, прикрепленном к моим контроллерам, я хочу иметь возможность ссылаться на дочерний объект, который контроллер удерживает в то время, но я не уверен, как это сделать. Любая идея, как это сделать, мне нужно пометить объекты или что-то подобное?

1 Ответ

0 голосов
/ 06 марта 2019

Один из способов сделать это, что я и делал раньше, это использовать System события.

Вы делаете два события в своих контроллерах:

event EventHandler OnPickedUp;
event EventHandler OnLetGo;

Если вам удастся получить что-то в пределах досягаемости, вы инициируете событие OnPickekUp

public class MyVRController
{
    public event EventHandler OnPickedup;
    public event EventHandler OnLetGo;
    private bool HasObject = false;
    ...
    private void SuccessfullyPickedUp(GameObject pickedUpGO)
    {
        if(OnPickedUp != null)
        {
            HasObject = true;
            OnPickedUp(pickedUpGO, null);
        }
    }
    ...
    private void OnLetGo()
    {
        if(OnLetGo != null)
        {
            HasObject = false;
            OnLetGo(this, null);
        }
    }
    ...
}

Тогда все, что нуждается в заботе о том, что вы что-то подняли или что-то уронили, можетсделайте это:

public class MyGameManager
{
    public void Start()
    {
        // However you reference the controllers, do it here.
        myRightVRController.OnPickedUp += SomeFunc1;
        myRightVRcontroller.OnLetGo += SomeFunc2;
        myLeftVRController.OnPickedUp += SomeFunc3;
        myLeftVRController.OnLetGo += SomeFunc4;
        // The rest of your initialization...
    }
}

Если вы хотите, вы можете указать, от какого контроллера поступило событие в EventArgs, которое может быть передано (в данный момент проходит null).

Надеюсь, это поможет!

...