Unity_移动平台触控拖动摄像机

PC平台用鼠标的方式在移动平台无效 

用法挂载到场景中的摄像机上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MouseMove : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 0.1f;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //触摸个数
        /*touchCount: 触摸次数。保证在整个帧期间不会更改。(只读)
        Input.touchCount 提供当前屏幕触摸操作的次数, 每次触摸屏幕,都会使 Input.touchCount 增大
        */
        if (Input.touchCount == 1)
        {
            //触摸类型为移动触摸
            /*
             GetTouch 返回 Touch 结构。用0来获得首次屏幕触摸, Touch 描述触摸屏
            Touch.phase: 描述触摸阶段, 触摸 phase 指手指在最近的帧更新时采取的操作
            因为设备在整个“生命周期”中对触摸进行跟踪,所以触摸的开始和结束以及之间的移动可以在发生触摸的帧上报告

            TouchPhase: TouchPhase 是一个枚举类型,其中包含手指触摸状态。这些状态表示手指在最近的帧更新时采取的操作
            TouchPhase.Moved: 手指在屏幕上进行了移动的状态
             */
            if (Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                //根据触摸点计算X与Y位置
                /*
                 Input.GetAxis: 返回由参数标识的虚拟轴的值
                轴映射到鼠标时,该值为当前鼠标增量乘以轴灵敏度
                通常,正值表示鼠标向右/向下移动,负值表示鼠标向左/向上移动
                该值与帧率无关
                 */
                float h = moveSpeed * Input.GetAxis("Mouse X");
                float v = moveSpeed * Input.GetAxis("Mouse Y");

                //移动摄像机
                /*
                 Transform: 对象的位置、旋转和缩放
                场景中的每个对象都有一个变换。 它用于存储和操作对象的位置、旋转和缩放

                transform: 附加到此 GameObject 的 Transform

                Transform.Translate: 根据 translation(参数) 的方向和距离移动变换
                 */
                transform.Translate(-h, -v, 0);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36917144/article/details/121562832