该类还订阅了OnSelectionRadial的OnSelectionComplete事件,这样当radial被填布满的时候,会挪用HandleSelectionComplete。该要领的浸染是让摄像机淡出,并挪用所选的关卡。

}

C#剧本:

此刻我们应该对根基的VR交互组件有了或许的印象,包罗任安在VR Samples项目中详细利用这些组件。此刻让我们来看看VR Samples项目中如何利用gaze(注视)和reticles(十字星)。

public event Action OnDown;

我们还提供了一个示例的Reticle剧本。该剧本可以跟VREyeRaycaster一起合用,从而将准星安排加入景的正确位置,而且可以选择跟所掷中的工具法线帖齐。

C#剧本:

{

m_SelectionRadial.Hide();

break;

break;

十字准星用于帮助标志用户视野的中心。十字准星的样式大概是简朴的点,也大概是一个十字准线,详细形式取决于项目需求。

m_InteractiveItem.OnOver -= HandleOver;

准星安排在稍远的物体上:

[SerializeField] private float m_Torque = 10f;

}

m_AgentTrail.SetDestination();

我们可以直接在VRInput上订阅事件:

正如上面所提到的,我们所有的示例游戏都利用VRInput来处理惩罚触摸屏和键盘的输入。Maze游戏中的摄像机也会对swipe作出响应:

在利用游戏手柄时,左侧的stick可以用作swipe,个中的某个按键可以用作触碰。

VREyeRaycaster

m_InteractiveItem.OnDoubleClick -= HandleDoubleClick;

m_Renderer.material = m_NormalMaterial;

// Called when the gaze leaves this object

}

m_AiCharacter.SetTarget(target.position);

在VR项目中头部的旋转和位置

// Play the audio.

[SerializeField] private Renderer m_Renderer;

将十字准星渲染到其它游戏工具的外貌

namespace VRStandardAssets.Examples

[SerializeField] private VRInteractiveItem m_InteractiveItem;

C#剧本:

C#剧本:

}

}

{

// Called when Fire1 is released.

Maze

Quaternion headRotation = InputTracking.GetLocalRotation (VRNode.Head);

m_ReticleTransform.localRotation = m_OriginalRotation;

}

{

public event Action OnCancel;

return;

if (!m_GameController.IsGameRunning)

SpawnLaser(m_LaserSpawnPosRight);

}

VRInput是个简朴的类,可以判定用户在GearVR上(或是利用DK2时在PC上)所举办的一些简朴操纵,好比滑动、触碰、或双触。

C#剧本:

else

C#剧本:

// However if it isn't using the normal then it's local rotation should be as it was originally.

在VR游戏中利用触摸板和键盘举办交互

下图展示了准星如何匹配墙壁的法线:

eulerRotation.x = 0;

C#剧本:

下面的图展示了游戏工具如何按照用户所凝望的位置来举办旋转:

// be used to change things on gameobjects by handling events.

利用头部旋转作为输入方法的大概应用是风雅旋转菜单或是其它工具。在VRSampleScenes/Examples/Rotation场景中可以看到这一点的示例。

private void HandleOut()

public event Action OnDoubleClick;

case VRInput.SwipeDirection.RIGHT:

{

m_VRInput.OnSwipe -= HandleSwipe;

正如上图中显示的,和其它交互工具一起,SelectionSlider剧本会监听由VRInteractiveItem和VRInput所分发的事件。

m_InteractiveItem.OnOut += HandleOut;

在头戴设备中跟踪头部的旋转和位置可以用陶醉式的体验来感觉周围情况,但同时也可以让工具按照这些数值所相应的相应。

VRInteractiveItem

假如十字准星刚好和某个工具的位置沟通,那么准星大概会嵌入惠邻近的工具中。

}

{

case VRInput.SwipeDirection.DOWN:

将准星放在空间的这个点意味着从远处看准星将很是小,当接近时会变大。为了让准星的巨细不随间隔产生变革,我们需要按照它到摄像机的间隔对其举办缩放。

if (OnButtonSelected != null)

{

为了获取这些数值我们需要用到VR.InputTracking类,并指定我们要会见的VRNode。为了获取头部的旋转,我们会但愿用到VRNode.Head,而不是两只眼睛。想相识更多的信息,可以参考Getting Started with VR Development一文中的Camera Nodes。

准星安排在接近摄像机的物体上:

猜你喜欢