unity3D 实现手机的双指触控和Input类touch详解

多点触控时,下标是从0开始的,两个触控点下标就是0,1。

代码如下:

nt touchCount = 2; // 触摸帧的数量

if(touchCount == Input.touchCount())
{ vector2 touchPosition1 = Input.GetTouch(0).position; vector2 touchPosition2 = Input.GetTouch(1).position; }

  

1.Input.touchCount 触摸随之增长,一秒50次增量。

2.Input.GetTouch(0).phase==TouchPhase.Moved 手指滑动中最后一帧滑动的状态是运动的。

3.TouchPhase  触摸的几个状态。

4.Touch.deltaPosition 增量位置(Input.GetTouch(0).deltaPosition)最后一帧滑动的值,只返回xy轴坐标,也可用vector3(z轴为0),所以一般用vector2接收。

static var aa:int;
function Update () {
if(Input.touchCount>0)
{
print(Input.touchCount);
}
}
function OnGUI()
{
GUI.Label(Rect(34,34,34,34),"sdff");
}

touchCount指的是触摸帧的数量。要注意的是:touch事件 只能在模拟器或者真机上运行(已测试通过),大约一秒钟touch不放。touchCount+50次左右。2.Input.touches 触摸列表。

// Prints number of fingers touching the screen
//输出触摸在屏幕上的手指数量
function Update () {
var fingerCount = 0;
for (var touch : Touch in Input.touches) {
if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
fingerCount++;
}
if (fingerCount > 0)
print ("User has " + fingerCount + " finger(s) touching the screen");
}

3.让cube随着touch 移动代码:

static var count:int; //定义touchCount数
var particle_:GameObject;//定义存放cube对象
var touchposition:Vector3; //存储移动三维坐标值
function Update () {
if(Input.touchCount>0)
{
count+=Input.touchCount;}
if((Input.touchCount>0&&Input.GetTouch(0).phase==TouchPhase.Moved)) //[color=Red]如果点击手指touch了  并且手指touch的状态为移动的[/color]
{
touchposition=Input.GetTouch(0).deltaPosition;  //[color=Red]获取手指touch最后一帧移动的xy轴距离[/color]
particle_.transform.Translate(touchposition.x*0.01,touchposition.y*0.01,0);//[color=Red]移动这个距离[/color]
}}
function OnGUI()
{
GUI.Label(Rect(10,10,100,30),"cishu:"+count.ToString());
GUI.Label(Rect(10,50,100,30),touchposition.ToString());
}

 参考自:http://www.unitymanual.com/2775.html

转载于:https://www.cnblogs.com/Kprogram/p/4203969.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Unity实现指触实现鼠标滚轮滚动效果的示例代码: ``` using UnityEngine; using System.Collections; public class TouchMouseWheel : MonoBehaviour { public float sensitivity = 10.0f; private float scrollVelocity = 0.0f; // Update is called once per frame void Update () { if (Input.touchCount == 2) { Touch touchZero = Input.GetTouch(0); Touch touchOne = Input.GetTouch(1); Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition; Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition; float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude; float touchDeltaMag = (touchZero.position - touchOne.position).magnitude; float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag; scrollVelocity += deltaMagnitudeDiff * sensitivity * Time.deltaTime; MouseScroll(scrollVelocity); } // Decrease velocity over time scrollVelocity = Mathf.Lerp(scrollVelocity, 0, Time.deltaTime * sensitivity); } // Simulate mouse scroll wheel void MouseScroll(float delta) { #if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL float scrollWheelAmount = delta * 0.1f; // scroll mousewheel to replicate zoom effect if (scrollWheelAmount > 0) { // scroll up Event e = new Event(); e.delta = new Vector2(0, 1 * scrollWheelAmount); e.type = EventType.ScrollWheel; e.mousePosition = Input.mousePosition; e.control = false; e.shift = false; e.alt = false; e.command = false; if (Input.GetAxis("Mouse ScrollWheel") == 0) { Event.current = e; } else { // Hack: if mouse is already scrolling, add delta to the existing scroll value e.delta = new Vector2(0, Input.GetAxis("Mouse ScrollWheel") + (1 * scrollWheelAmount)); Event.current = e; } SendMessage("OnScrollWheel", SendMessageOptions.DontRequireReceiver); } else if (scrollWheelAmount < 0) { // scroll down Event e = new Event(); e.delta = new Vector2(0, -1 * Mathf.Abs(scrollWheelAmount)); e.type = EventType.ScrollWheel; e.mousePosition = Input.mousePosition; e.control = false; e.shift = false; e.alt = false; e.command = false; if (Input.GetAxis("Mouse ScrollWheel") == 0) { Event.current = e; } else { // Hack: if mouse is already scrolling, add delta to the existing scroll value e.delta = new Vector2(0, Input.GetAxis("Mouse ScrollWheel") - (1 * Mathf.Abs(scrollWheelAmount))); Event.current = e; } SendMessage("OnScrollWheel", SendMessageOptions.DontRequireReceiver); } #endif } } ``` 注意:该示例代码仅适用于Unity编辑器、桌面浏览器和WebGL平台,其它平台需要加以修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值