其他分享
首页 > 其他分享> > [ToneTuneToolkit][019]安卓平台下对象的旋转及缩放

[ToneTuneToolkit][019]安卓平台下对象的旋转及缩放

作者:互联网

#region Environment </br> Windows 10 21H1 </br> Unity 2020.3.16f1 LTS </br> VSCode 1.60.0 </br> // ToneTune Toolkit 下载地址 </br> // https://github.com/MirzkisD1Ex0/ToneTuneToolkit.git </br> #endregion </br>   Android平台下AR开发可能会用到的功能, 比如说识别到模型后对其进行旋转、缩放用以查看阅览啊…… 总之就是这么个功能。 // 需要使用ToneTuneToolkit插件
  01.新建场景,然后随便找个模型丢进场景里,对光和相机进行调整。(我用的是自建的康师傅……贴图是从网上找的……已包含在TTT工具包的Models下了,需要的话自取)     02.从TTT插件中,将ObjectRotateAndScale.cs添加至模型上,为模型添加碰撞器,用于射线检测。     03.代码内容如下,tag那里和模型的标签记得根据自己的需求改! /// <summary> /// Copyright (c) 2021 MirzkisD1Ex0 All rights reserved. /// Code Version 1.0 /// </summary>
using System.Collections; using System.Collections.Generic; using UnityEngine;
namespace ToneTuneToolkit.Mobile {   public class ObjectRotateAndScale : MonoBehaviour   {     private Vector2 oldPosA;     private Vector2 oldPosB;
    private void Update()     {       if (Input.GetMouseButton(0))       {         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);         RaycastHit hit;         if (Physics.Raycast(ray, out hit))         {           if (hit.collider.tag == "Player") // 如果射线不在Tag为Player的物体上则跳过后续的步骤           {             if (Input.touchCount == 1)             {               ObjectRotate();             }             if (Input.touchCount == 2)             {               ObjectScale();             }           }         }       }     }
    /// <summary>     /// 单指操作     /// 旋转     /// </summary>     private void ObjectRotate()     {       if (Input.GetTouch(0).phase == TouchPhase.Moved)       {         float offsetX = Input.GetAxis("Mouse X");         float offsetY = Input.GetAxis("Mouse Y");         transform.Rotate(new Vector3(offsetY, -offsetX, 0) * 10f, Space.World);       }       return;     }
    /// <summary>     /// 双指操作     /// 缩放     /// </summary>     private void ObjectScale()     {       if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)       {         Vector2 newPosA = Input.GetTouch(0).position;         Vector2 newPosB = Input.GetTouch(1).position;         float oldScale;         float newScale;         oldScale = transform.localScale.x;         if (IsEnlarge(oldPosA, oldPosB, newPosA, newPosB))         {           newScale = oldScale * 1.02f;         }         else         {           newScale = oldScale / 1.02f;         }         transform.localScale = new Vector3(newScale, newScale, newScale);         oldPosA = newPosA;         oldPosB = newPosB;       }     }
    /// <summary>     /// 双指触点判断     /// 远了就是放大     /// </summary>     /// <param name="oldPositionA"></param>     /// <param name="oldPositionB"></param>     /// <param name="newPositionA"></param>     /// <param name="newPositionB"></param>     /// <returns></returns>     private bool IsEnlarge(Vector2 oldPositionA, Vector2 oldPositionB, Vector2 newPositionA, Vector2 newPositionB)     {       float oldDistance = Vector2.Distance(oldPositionA, oldPositionB);       float newDistance = Vector2.Distance(newPositionA, newPositionB);       if (oldDistance < newDistance)       {         return true;       }       return false;     }   } }     04.打包在安卓平台上,安装完毕后就可以看到效果,单指旋转,双指缩放。 嗯……静态图片看不出效果。   #region Introduction
此工程位于Github,遵从GPLv3.0协议,请根据需求使用。Pull完记得点个Star!
文章仅作抛砖引玉之用,希望能够借此给予寻求思路的开发者们一些灵感。
此教程系列曾属于“Unity The Great”,但由于“Tone Tune Tookit”的诞生,开发组决定将两个系列进行合并。
如果内容中出现了语混序乱、错鳖字、缺少标点符号的情况还请见谅
互联网精神永存。
Hooray!!!
#endregion

#region Developer
[团队代言人博客]
// https://www.cnblogs.com/mirzkisd1ex0/
[开发者邮箱]
// dearisaacyang@outlook.com
[开发者微信]
// wxid_63t8w3035kvp22
[开发者企鹅]
// 2957047371
#endregion      

标签:ToneTuneToolkit,缩放,GetTouch,安卓,float,private,Input,newScale,Vector2
来源: https://www.cnblogs.com/mirzkisd1ex0/p/15233204.html