在虚拟现实(VR)游戏中,玩家的沉浸感很大程度上取决于游戏的交互方式。Google Daydream平台为开发者提供了一种新的交互方式——Daydream控制器。与Google Cardboard相比,Daydream控制器提供了更多的输入方式,特别是触摸板,它允许检测玩家的滑动操作。本文将介绍如何利用触摸板实现游戏中角色的移动。
GoogleDaydream控制器是一个专为Daydream平台设计的手持设备,它提供了一种新的交互方式。与Cardboard只有一个输入方式不同,Daydream控制器拥有触摸板,可以检测玩家的触摸和滑动操作。这为在游戏中实现更丰富的交互提供了可能。
目标是使用触摸板的位置信息来确定角色的移动方向。玩家触摸触摸板的位置越远离中心,角色移动的速度就越快。
首先,在Player对象上创建一个新的脚本组件,命名为TouchpadMovement。然后,可以移除PlayerInput组件,因为将使用新的TouchpadMovement脚本来处理输入。
在TouchpadMovement脚本中,将编写代码,根据玩家触摸触摸板的位置来控制角色在游戏中的移动。以下是脚本的代码示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TouchpadMovement : MonoBehaviour
{
private float _speedSlowDown;
private Camera _mainCamera;
void Start()
{
_speedSlowDown = 0.1f;
_mainCamera = Camera.main;
}
void Update()
{
_mainCamera.transform.position += new Vector3(0, 1, 0);
if (GvrControllerInput.IsTouching)
{
Vector3 touchPos = GvrControllerInput.TouchPos;
Vector3 movementVector = new Vector3(touchPos.x - 0.5f, 0, touchPos.y - 0.5f);
transform.Translate(movementVector.x * _speedSlowDown, 0, -movementVector.z * _speedSlowDown);
}
}
}
在TouchpadMovement脚本中,定义了两个全局字段:
已经知道如何读取玩家在Daydream控制器触摸板上触摸的位置。现在需要使用这些信息来确定角色的移动方向。
知道触摸板的左上角是(0, 0),中心是(0.5, 0.5)。要确定玩家触摸的方向,只需从玩家触摸的位置减去(0.5, 0.5)。这样就可以得到角色应该移动的方向向量。
如果玩家想要向左移动,他们触摸的位置将是(0, 0.5)。如果用(0.5, 0.5)减去这个位置,得到一个向量(-0.5, 0)。这意味着想要向左移动,所以X值应该是-0.5。
Y值则稍有不同,因为起始值在顶部是0。假设想要向前移动,触摸位置向量将是(0.5, 0)。如果用(0.5, 0.5)减去这个位置,得到(0, -0.5)。这看起来可能有些奇怪,因为期望看到一个正数,而不是负数。所以稍后需要反转Y值的符号,以便可以得到正确的位置。
现在,如果玩这个游戏,一切都会运行得很好,可以按照触摸触摸板的方向移动。