Unity摄像机-双手指滑动移动摄像机

本实例实现了双手指滑动移动摄像机视角的功能。这个功能被拆分成了两个方法:MoveCamera() 用于处理双手指滑动并移动摄像机,而 CalculateCameraMovement() 则用于计算摄像机的移动方向和距离。

using UnityEngine;

public class CameraMove : MonoBehaviour
{
    public Camera mainCamera; // 需要在Unity编辑器中指定
    public float moveSpeed = 0.5f; // 摄像机移动速度
    private Vector2 previousTouchMidPoint; // 上一次触摸点的中点

    private void Update()
    {
        // 检查是否有两个手指触摸屏幕
        if (Input.touchCount == 2)
        {
            // 获取第一个和第二个触摸点
            Touch touchZero = Input.GetTouch(0);
            Touch touchOne = Input.GetTouch(1);

            // 计算当前两个触摸点的中点
            Vector2 currentTouchMidPoint = (touchZero.position + touchOne.position) / 2;

            // 如果任一手指开始移动,则计算并移动摄像机
            if (touchZero.phase == TouchPhase.Moved || touchOne.phase == TouchPhase.Moved)
            {
                MoveCamera(currentTouchMidPoint);
            }
            // 如果两个手指都刚开始触摸,则记录初始中点
            else if (touchZero.phase == TouchPhase.Began && touchOne.phase == TouchPhase.Began)
            {
                previousTouchMidPoint = currentTouchMidPoint;
            }
        }
    }

    // 移动摄像机
    void MoveCamera(Vector2 currentTouchMidPoint)
    {
        // 计算移动方向和距离
        Vector2 movement = currentTouchMidPoint - previousTouchMidPoint;
        previousTouchMidPoint = currentTouchMidPoint; // 更新上一次触摸点的中点

        // 将触摸移动转换为摄像机移动
        Vector3 cameraMovement = new Vector3(movement.x, 0, movement.y) * moveSpeed;
        mainCamera.transform.Translate(-cameraMovement, Space.World);
    }
}

在这个脚本中,mainCamera 需要在Unity编辑器中指定为你想要移动的摄像机。moveSpeed 变量用于控制摄像机移动的速度。

Update() 方法用于检测双手指的触摸,并计算它们的中点。如果任一手指开始移动,则调用 MoveCamera() 方法来移动摄像机。MoveCamera() 方法计算摄像机的移动方向和距离,并将其应用到摄像机上。注意,这里使用了 Translate() 方法来移动摄像机,并且移动是在世界空间中进行的(Space.World)。如果你想要在不同的空间中进行移动,可以相应地更改这个参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂跳跳虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值