使用谷歌地图等触摸输入在地形上移动相机

时间:2015-01-23 08:44:53

标签: c# ios unity3d 3d touch

我制作了一个脚本,将相机移动到移动设备上包含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阻止光线投射,在地形上的初始光线投射之后,下一个光线投射在不可见的水平面上完成。

此脚本可以在任何地形上水平移动。

现在我试图用两个手指做类似的事情(应用旋转和放大缩小)但我找不到解决方案。

我尝试每个手指应用一次射线投射,然后我不知道如何处理数据。

有什么想法吗?

Similar question

0 个答案:

没有答案