缩放

缩放

分类: unity   91人阅读  评论(0)  收藏  举报
using UnityEngine;
using System.Collections;


public class Move : MonoBehaviour {
#if UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8 || UNITY_BLACKBERRY
    float ratio = 0.0f;
    bool isRationChanged = false;
    CameraControl cameraControl;
    Vector2 oldPosition1;
    Vector2 oldPosition2;
    Vector2 tempPosition1;
    Vector2 tempPosition2;
    ScaleType scaleType = ScaleType.None;
    void Start() {
        cameraControl = transform.GetComponent<CameraControl>();
    }


    void LateUpdate() {
        if (Input.touchCount >= 1) {


            if (Input.GetTouch(0).phase == TouchPhase.Began || Input.GetTouch(1).phase == TouchPhase.Began) {
                tempPosition1 = Input.GetTouch(0).position;
                tempPosition2 = Input.GetTouch(1).position;
                oldPosition1 = tempPosition1;
                oldPosition2 = tempPosition2;
            }


            if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved) {
                scaleType = GetScaleType();
                tempPosition1 = Input.GetTouch(0).position;
                tempPosition2 = Input.GetTouch(1).position;


                //if (IsScale(oldPosition1, oldPosition2, tempPosition1, tempPosition2)) {
                //        ratio += 0.01f;
                //} else {
                //        ratio -= 0.01f;
                //}
                ScaleEvent(scaleType);


                if (isRationChanged) { isRationChanged = false; cameraControl.move(ratio); }
                oldPosition1 = tempPosition1;
                oldPosition2 = tempPosition2;
            }
        }
    }


    void ScaleEvent(ScaleType type) {
        switch (scaleType) {
            case ScaleType.Large:
                if (!IsScale(oldPosition1, oldPosition2, tempPosition1, tempPosition2)) {
                    ratio -= 0.01f;
                    isRationChanged = true;
                }
                break;
            case ScaleType.Small:
                if (IsScale(oldPosition1, oldPosition2, tempPosition1, tempPosition2)) {
                    ratio += 0.01f;
                    isRationChanged = true;
                }
                break;
            case ScaleType.Middle:
                if (IsScale(oldPosition1, oldPosition2, tempPosition1, tempPosition2)) {
                    ratio += 0.01f;
                    isRationChanged = true;
                } else {
                    ratio -= 0.01f;
                    isRationChanged = true;
                }
                break;
        }
    }


    ScaleType GetScaleType() {
        float distance = Vector3.Distance(cameraControl.subCamera.transform.position, GameControl.Instance.CurrentPlayer.transform.position);
        if (distance <= 3) {
            return ScaleType.Large;
        }
        if (distance >= 20) {
            return ScaleType.Small;
        }
        return ScaleType.Middle;
    }


    bool IsScale(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2) {
        float leng1 = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));
        float leng2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));
        return leng2 > leng1;
    }


    enum ScaleType {
        None = 0,
        Large = 1,
        Small = 2,
        Middle = 3
    }
#endif
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值