我制作了一个脚本,将相机移动到移动设备上包含montains的地形上。
我正在尝试为Android制作移动脚本,以便将相机移动到地形上,就像在Google地图上完成一样。
public LayerMask terrainMask;
// This mask need to be not used elsewhere
// Needed for raycasting
public int layerAlone;
GameObject[] previousTouchPointAndInputMask;
void Start()
{
previousTouchPointAndInputMask = new GameObject[3];
for (int i = 0; i < 3; i++)
{
previousTouchPointAndInputMask[i] = new GameObject("PlatformController Input platform");
previousTouchPointAndInputMask[i].AddComponent<BoxCollider>().size = new Vector3(float.MaxValue, 1, float.MaxValue);
previousTouchPointAndInputMask[i].layer = layerAlone;
}
}
void LateUpdate()
{
Ray ray;
UnityEngine.RaycastHit hitInfo;
if (Input.GetButtonDown("Fire1") && Input.touchCount == 1)
{
// Construct a ray from the current mouse coordinates
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Physics.Raycast(ray, out hitInfo, float.MaxValue, terrainMask);
previousTouchPointAndInputMask[0].transform.position = hitInfo.point;
previousTouchPointAndInputMask[0].transform.localRotation = Quaternion.identity;
}
else if (Input.GetButton("Fire1") && Input.touchCount == 1)
{
// Construct a ray from the current mouse coordinates
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hitInfo, float.MaxValue, 1 << layerAlone))
{
Vector3 movement = previousTouchPointAndInputMask[0].transform.position - hitInfo.point;
movement.y = 0;
transform.Translate(movement);
}
}
}
此脚本附加到相机。
所以我正在使用光线投射。
为了避免montains阻止光线投射,在地形上的初始光线投射之后,下一个光线投射在不可见的水平面上完成。
此脚本可以在任何地形上水平移动。
现在我试图用两个手指做类似的事情(应用旋转和放大缩小)但我找不到解决方案。
我尝试每个手指应用一次射线投射,然后我不知道如何处理数据。
有什么想法吗?