unity ScrollTouchMove

为了实现unity ListView 功能 自己写的触摸控制


using UnityEngine;
using System.Collections;

public class ScrollTouchMove : MonoBehaviour {

	public Vector2 scrollPosition = Vector2.zero;
	public float scrollVelocity = 0f;
	public float timeTouchPhaseEnded = 0f;
	public float inertiaDuration = 0.5f;
	
	public Vector2 lastDeltaPos;

	private Vector3 initPosition;
	private Vector3 BarinitPosition;
	private Transform _transform;
	private float speed;
	// Use this for initialization
	void Start () {
		_transform = transform;
		initPosition = transform.position;

		BarinitPosition = bar.position;

		JisuanBar ();
		SetTouchRegion ();

	}
	
	// Update is called once per frame
	void Update () {

		float YY = (top.localPosition.y - bttom.localPosition.y) - (topleft.localPosition.y - btomright.localPosition.y);
		float YY1 = (topleft.localPosition.y - btomright.localPosition.y);
		float YY2=(top.localPosition.y - bttom.localPosition.y);

	}


	void mymove(){

		if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {  
			Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;  

		}
	}


	public static bool isPointerInBox(float x, float y, float[] box) {
		return x >= box[0] && x <= box[2] && y >= box[1] && y <= box[3];
	}
    
	float[] RegionBox=new float[4];
	void setBox (Vector2 point1,Vector2 point2)
	{
		RegionBox [0] = point1.x;
		RegionBox [1] = point1.y;
		RegionBox [2] = point2.x;
		RegionBox [3] = point2.y;

	}

	public void SetTouchRegion(){

		Vector2 topScPosition1=new Vector3(topleft.localPosition.x+Screen.width/2,Screen.height/2-topleft.localPosition.y,0f);
		Vector2 topScPosition2=new Vector3(btomright.localPosition.x+Screen.width/2,Screen.height/2-btomright.localPosition.y,0f);
		setBox (topScPosition1,topScPosition2);
	}

	public Transform topleft;
	public Transform btomright;
	public Transform top;
	public Transform bttom;

	Vector2 aa;

	private Vector2 first = Vector2.zero;
	private Vector2 second = Vector2.zero;
	void  OnGUI ()		
	{	

		 if(Event.current.type == EventType.MouseDown)
		{
			first = Event.current.mousePosition ;
		}
		if(Event.current.type == EventType.MouseDrag)
		{
			second = Event.current.mousePosition ;
			aa=second;
			if(!isPointerInBox(Event.current.mousePosition.x,Event.current.mousePosition.y,RegionBox)){
				Debug.Log("aaaaaaaaaaaaaaaa");
				return;
			}


			if(first.y-second.y<0&&(top.position.y+(first.y-second.y)*0.005f)>topleft.position.y){

				_transform.position=new Vector3(_transform.position.x,_transform.position.y+(first.y-second.y)*0.005f,_transform.position.z);
        			bar.position=new Vector3(bar.position.x,bar.position.y-(first.y-second.y)*0.005f*DisRate,bar.position.z);
				
			}

			if(first.y-second.y>0&&(bttom.position.y+(first.y-second.y)*0.005f)<btomright.position.y){
				_transform.position=new Vector3(_transform.position.x,_transform.position.y+(first.y-second.y)*0.005f,_transform.position.z);
				bar.position=new Vector3(bar.position.x,bar.position.y-(first.y-second.y)*0.005f*DisRate,bar.position.z);

			}


			first = second; 
		}



	}


	public Transform BACKpic;
	public Transform bar;

	float DisRate;
	float DisRate2;
	void JisuanBar(){

		float YY = (top.localPosition.y - bttom.localPosition.y) - (topleft.localPosition.y - btomright.localPosition.y);
		//BACKpic.localScale
			Debug.Log("BACKpic.localScale:"+BACKpic.localScale);
		float rate = (BACKpic.localScale.x-bar.localScale.y);
		Debug.Log ("rate:"+rate);
		DisRate = rate / YY;

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值