Unity AR 两指手势实现物体放大缩小功能

这篇具有很好参考价值的文章主要介绍了Unity AR 两指手势实现物体放大缩小功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

//C#脚本如下,将脚本挂在物体上即可

Zoom.cs文章来源地址https://www.toymoban.com/news/detail-513644.html

using UnityEngine;

public class Zoom : MonoBehaviour
{
    //旧的触摸点位置
    Vector2 oldPos1;
    Vector2 oldPos2;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //判断触摸点的数量是否为两个
        if(Input.touchCount == 2)
        {
            //判断两个触摸点的状态是否为手指进行了移动
            if (Input.GetTouch(0).phase == TouchPhase.Moved||Input.GetTouch(1).phase==TouchPhase.Moved)
            {
                //新的触摸点的位置
                Vector2 newPos1 = Input.GetTouch(0).position;
                Vector2 newPos2 = Input.GetTouch(1).position;

                //判断触摸的手势是否为放大
                if(isEnLarge (oldPos1,oldPos2,newPos1,newPos2))
                {
                    //获取transform组件缩放属性x轴数值
                    float oldScale = transform.localScale.x;
                    //新的数值为旧的数值放大1.025倍
                    float newScale = oldScale * 1.025f;

                    //将新的值赋给transform组件缩放属性
                    transform.localScale = new Vector3(newScale, newScale, newScale);
                }
                else  //如果触摸手势为缩小,同理缩小1.025倍
                {
                    float oldScale = transform.localScale.x;
                    float newScale = oldScale / 1.025f;

                    transform.localScale = new Vector3(newScale, newScale, newScale);
                }

                //新的位置覆盖旧的位置
                oldPos1 = newPos1;
                oldPos2 = newPos2;
            }
        }
    }

    //判断手势是否为放大手势
    bool isEnLarge(Vector2 oldP1, Vector2 oldP2,Vector2 newP1,Vector2 newP2)
    {
        //计算旧两点间的距离与新两点间的距离
        float oldLength = Mathf.Sqrt((oldP1.x - oldP2.x) * (oldP1.x - oldP2.x) + (oldP1.y - oldP2.y) * (oldP1.y - oldP2.y));
        float newLength = Mathf.Sqrt((newP1.x - newP2.x) * (newP1.x - newP2.x) + (newP1.y - newP2.y) * (newP1.y - newP2.y));

        //判断旧两点间的距离与新两点间的距离大小,如果旧的距离小于新的距离,说明是放大手势
        if (oldLength < newLength)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

到了这里,关于Unity AR 两指手势实现物体放大缩小功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包