手机游戏选择英雄时用单手指控制英雄旋转,双手指控制英雄大小缩放

本文介绍了一个Unity中的脚本实现,该脚本通过检测触摸输入来控制游戏对象的旋转和平移缩放。具体包括如何处理单指旋转和双指缩放的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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

public class Planeouch : MonoBehaviour
{
    //定义两个(早的)触摸点
    Touch oldTouchOne;
    Touch oldTouchTwo;
    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        switch (Input.touchCount)//判断触摸点(屏幕上手指)数量
        {
            case 0:
                //没有手指在屏幕上,return
                return;
            case 1:
                //一个手指在屏幕上,调用旋转函数
                OnePoint();
                break;
            case 2:
                //两个手指在屏幕上,调用放大缩小函数
                TwoPoint();
                break;
        }
    }
    /// <summary>
    /// 一个手指触摸,旋转函数
    /// </summary>
    void OnePoint()
    {
        //获取一个手指
        Touch touch = Input.GetTouch(0);
        //获取这个手指的位置
        Vector2 v2 = touch.deltaPosition;
        //沿着y轴旋转手指x的改变量
        transform.Rotate(Vector3.back* v2.x, Space.World);
    }
    /// <summary>
    /// 两个手指触摸,放大缩小函数
    /// </summary>
    void TwoPoint()
    {
        //定义两个新的触摸点
        Touch newTouchOne = Input.GetTouch(0);
        Touch newTouchTwo = Input.GetTouch(1);
        if (newTouchTwo.phase == TouchPhase.Began)//第二个手指放到屏幕上
        {
            //新的触摸点赋值给早先的触摸点
            oldTouchOne = newTouchOne;
            oldTouchTwo = newTouchTwo;
            return;
        }
        //早先的两个触摸点(手指)之间的距离
        float oldDistance = Vector2.Distance(oldTouchOne.position, oldTouchTwo.position);
        //新的(两个手指触摸位置改变后)的两个触摸点(手指)之间的距离
        float newDistance = Vector2.Distance(newTouchOne.position, newTouchTwo.position);
        //两个距离的差值/1000
        float offset = (newDistance - oldDistance) / 1000;//差值/1000
        //定义一个v3类型变量LocalScal,用来记录物体的localScale
        Vector3 LocalScal = transform.localScale;
        //定义一个v3类型变量scal,它等于上一个的LocalScal变量加上两个距离的差值
        Vector3 scal = new Vector3(LocalScal.x + offset, LocalScal.y + offset, LocalScal.z + offset);
        //如果物体的scal大于或等于0.25(也就是物体最小和缩小到0.25)
        if (scal.x >= 0.25f && scal.y >= 0.25f && scal.z >= 0.25f)
        {
            transform.localScale = scal;//把scal赋值给物体的localScale
        }
        //记录新的触摸点为老的触摸点
        oldTouchOne = newTouchOne;
        oldTouchTwo = newTouchTwo;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值