当前位置:   article > 正文

Unity插件TouchScript初识

touchscript

一、下载并试玩

首先去Asset Store下载该插件,过程不多赘述,下载完并导入。

可以先来体验一下,你就明白这个插件好不好玩了,点击那个Examples.unity,然后就可以试玩了。。

二、尝试自己用一下

创建一个场景,然后把TouchManager及Cursors预制体拖到Scene窗口下,点击运行:

来看一下输出:初始化Unity触摸输入;初始化Unity鼠标输入;没有找到触摸层,给main camera加上标准层。

恩。再来看一下这两个预制体上用到的代码····可以,很牛批,下一题:

继续往场景里加一个cube,然后给cube加上Transformer、Transform Gesture这两个组件,Transformer负责监听TransformGesture的事件并把响应的事件应用到GameObject上:

你会发现,鼠标可以拖动那个cube动。

三、研究插件给的其中一个Demo

由于时间关系,只研究一下Colors这个Demo。

 

说一下这个游戏怎么玩儿的,就是点击鼠标移动圆圈,圆圈吃圆圈。想要实现双指放大也容易,就是按住ALT键,在圆圈上整两个鼠标定点就行了。

首先来看Camera挂载的代码,很明显就是hit只检测2D物体了,既然游戏里的圆圈是可以被拖动并融合的,所以肯定就是这些圆圈了。

我们来看圆圈,发现Scene这个空物体上挂载了Colors.cs,它用到了Circle预制体,我们来看看这个预制体

发现这个预制体用了两个Collider,一个半径是0.1,一个半径是0.5,并且半径为0.5的是Is Trigger的(下图这两个红色的圆圈),然后有2D刚体组件,并且挂载了Circle.cs,然后还有例行公事的Transform Gesture和Transformer(可以不用管这两个是干啥的,只要记住凡是场景内的物体想要有触摸的效果,就得加上这两个组件)。

我们可以看到Transform Gesture上面有Translation、Rotation、Scaling,意思就是用户可以移动、缩放和旋转圆。Transformer监听TransformGesture事件。

好了,我们来看看Colors.cs文件,其实很短,就41行代码····

  1. /*
  2. * @author Valentin Simonov / http://va.lent.in/
  3. */
  4. using UnityEngine;
  5. using System.Collections.Generic;
  6. namespace TouchScript.Examples.Colors
  7. {
  8. /// <exclude />
  9. public class Colors : MonoBehaviour
  10. {
  11. public Transform Prefab;
  12. public int Total = 10;
  13. private List<Color> colors = new List<Color>()
  14. {
  15. Color.blue,
  16. Color.cyan, //蓝绿
  17. Color.gray,
  18. Color.green,
  19. Color.magenta, //洋红
  20. Color.red,
  21. Color.white,
  22. Color.yellow,
  23. Color.black
  24. };
  25. void Start()
  26. {
  27. var container = transform.Find("Container"); //找到名字为Container的物体
  28. for (var i = 0; i < Total; i++)
  29. {
  30. var obj = Instantiate(Prefab) as Transform; //预制体实例化
  31. obj.SetParent(container); //设置该circle的父是container
  32. obj.localPosition = new Vector3(Random.Range(-100, 100), Random.Range(-100, 100), 0); //设置该circle的位置
  33. obj.GetComponent<Renderer>().material.color = colors[Random.Range(0, colors.Count)]; //设置该circle的颜色
  34. }
  35. }
  36. }
  37. }

我们再来看Circle.cs,也很短,就53行代码....

  1. /*
  2. * @author Valentin Simonov / http://va.lent.in/
  3. */
  4. using UnityEngine;
  5. using TouchScript.Gestures;
  6. using TouchScript.Gestures.TransformGestures;
  7. namespace TouchScript.Examples.Colors
  8. {
  9. /// <exclude />
  10. public class Circle : MonoBehaviour
  11. {
  12. private bool isDestroyed = false;
  13. public Color Kill()
  14. {
  15. isDestroyed = true;
  16. GetComponent<TransformGesture>().Cancel(true, true);
  17. GetComponent<TransformGesture>().Cancel(true, true);
  18. var color = GetComponent<Renderer>().sharedMaterial.color;
  19. Destroy(gameObject);
  20. return color;
  21. }
  22. private void OnTriggerEnter2D(Collider2D other) //当两个Circle碰撞到一起时
  23. {
  24. if (isDestroyed) return;
  25. var gesture = GetComponent<TransformGesture>(); //获取TransformGesture组件
  26. if (gesture.State != Gesture.GestureState.Changed && gesture.State != Gesture.GestureState.Began) return;
  27. var otherCircle = other.GetComponent<Circle>();
  28. if (!otherCircle) return;
  29. var otherColor = otherCircle.Kill(); //获取另外一个Circle的颜色,并销毁另外一个Circle
  30. var scale =
  31. Mathf.Sqrt(otherCircle.transform.localScale.x*otherCircle.transform.localScale.x +
  32. transform.localScale.x*transform.localScale.x); //获取新的半径
  33. var color = Color.Lerp(GetComponent<Renderer>().sharedMaterial.color, otherColor, .5f); //获取新的颜色
  34. var obj = Instantiate(gameObject) as GameObject; //新创建一个物体
  35. obj.transform.SetParent(transform.parent); //继承原Circle的父
  36. obj.transform.localPosition = transform.localPosition; //继承原Circle的位置
  37. obj.transform.localRotation = transform.localRotation; //继承原Circle的旋转角
  38. obj.transform.localScale = new Vector3(scale, 1, scale); //得到新的大小
  39. obj.GetComponent<Renderer>().sharedMaterial.color = color; //显示新的颜色
  40. Kill(); //销毁原Circle及TransformerGesture的“关注”
  41. }
  42. }
  43. }

GetComponent<TransformGesture>().Cancel(true, true); 这里表示指针返回到系统,此时取消的指针会被新的(更大的)圆圈及其TransformGesture捕获,因此用户可以继续移动并调整新圆圈的大小。

OK,似乎没什么问题了。就酱。

 

参考博客:https://www.jianshu.com/p/4e9f0d65f896?from=singlemessage

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/114202
推荐阅读
相关标签
  

闽ICP备14008679号