备份

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;

 

/// <summary>
/// 主界面场景选择切换
///
/// 触摸让物体跟随手指手势转动,触摸停止后,物体都居中显示在屏幕上,5秒后让物体自转
///
/// </summary>

 

public class ZYDoHasRotateTheSphere : MonoBehaviour {

//-------------------------
public GameObject magicWorld, fanWorld, likeRemenberWords, babyArea;
//-------------------------

// public GameObject btnClickGameObject;
public GameObject sphere;//旋转的物体(球)

float maxSpeed = 20f;//转动的最大速度
float rotateSpeed =17f;//球平滑旋转的速度
float smoothTime = 1f;//球平滑转动的时间
float zAngle;

Vector3 touchPos; //触摸的位置

bool isRotate = true;//是否在自转
bool isCenter = false;//是否居中显示场景图标


void Update()
{
if (isRotate == true)
{
RotateIt();
}
if (isCenter == true)
{
TransformTheAngle();
}
//TouchRotate();
OnMouseClick();
}


#region 平滑转换z轴的值,让物体每次都居中显示在屏幕上
void TransformTheAngle()
{
zAngle = Mathf.SmoothDampAngle(sphere.transform.localEulerAngles.z, GetrotationValue(sphere.transform.localEulerAngles.z), ref rotateSpeed, smoothTime,maxSpeed,Time.deltaTime);
sphere.transform.localEulerAngles = new Vector3(0, 0, zAngle);//平滑阻尼转动
//Debug.Log("+++++++++++++++++Time.deltaTime is" + Time.deltaTime);
//sphere.transform.localEulerAngles = new Vector3(0, 0, GetrotationValue(sphere.transform.localEulerAngles.z));
//return isCenter = true;
}
#endregion

#region 触摸让物体跟随旋转,停止触摸时,3秒后物体自转
//触摸旋转
// void TouchRotate()
//{
// if (Input.GetTouch(0).phase == TouchPhase.Moved)
// {//判断是否在触摸移动

// touchPos = Input.GetTouch(0).deltaPosition;//为触摸的初始位置初始化
// sphere.transform.Rotate(0, 0, -touchPos.x * 0.3f, Space.Self);//触摸让物体绕Z轴自转
// isRotate = false;

// }

// if (Input.GetTouch(0).phase == TouchPhase.Ended)
// {
// //判断是否触摸停止

// bool y = TransformTheAngle();
// if (isRotate == false && y == true)
// {
// magicWorld.GetComponent<Button>().enabled = true;
// fanWorld.GetComponent<Button>().enabled = true;
// likeRemenberWords.GetComponent<Button>().enabled = true;
// babyArea.GetComponent<Button>().enabled = true;
// }
// Invoke("RotateIt", 3);

// }
//}
#endregion

#region 球自转
void RotateIt()
{
//停止按钮的脚本事件
magicWorld.GetComponent<Button>().enabled = false;
fanWorld.GetComponent<Button>().enabled = false;
likeRemenberWords.GetComponent<Button>().enabled = false;
babyArea.GetComponent<Button>().enabled = false;


////球自转

//GameObject.Find("magicWorld_btn").transform.FindChild("magicWorld").gameObject.GetComponent<Button>().enabled = false;
//GameObject.Find("fanWorld_btn").transform.FindChild("fanWorld").gameObject.GetComponent<Button>().enabled = false;
//GameObject.Find("likeRemenberWord_btn").transform.FindChild("likeRemenberWords").gameObject.GetComponent<Button>().enabled = false;
//GameObject.Find("babyArea_btn").transform.FindChild("babyArea").gameObject.GetComponent<Button>().enabled = false;


sphere.transform.Rotate(0, 0, 0.05f);
}
#endregion


#region 是否在旋转
void StartRotate()
{
isCenter = false;//图标不固定居中显示
isRotate = true; //球自转
}
#endregion


#region 更新z的值
//传入旋转的z值
private float GetrotationValue(float zValue)
{
float curValue = 0f;//物体与最近轴的角度偏差值
float value = 0f;//最近轴的角度值
if (zValue > 270)
{//判断z大于270度,并且偏差值小于45度时,旋转到270度
curValue = zValue - 270;
value = 270;
}
else if (zValue > 180)
{
curValue = zValue - 180;
value = 180;
}
else if (zValue > 90)
{
curValue = zValue - 90;
value = 90;
}
else
{
curValue = zValue;
value = 0;
}
curValue = value + (GetValue(curValue));//计算偏差值
return curValue;//返回偏差值
}
#endregion

#region 得到每次物体偏向的轴的值
private float GetValue(float value)
{
float curValue = 0;
if (value > 45)
{//判断大于45度,value的值就等于curValue加上90度
curValue = 90;
}
else
{//小于则为value本身的值
curValue = 0;
}
return curValue;//返回差值
}
#endregion


void OnMouseClick()
{
if (Input.GetMouseButtonDown(0))
{
isRotate = false;
//TransformTheAngle();
isCenter = true;
}
if (Input.GetMouseButtonUp(0))
{
Invoke("StartRotate", 3);
Debug.Log("has add clickEvent");
//AddbtnClick();
}
}


public void BtnTap(UnityEngine.Object name)
{
string tempStr = name.name;
Debug.Log(tempStr);
Application.LoadLevel(tempStr);
}

//void AddbtnClick()
//{
// if(isCenter==true && isRotate == false)
// {
// //btnClickGameObject.SetActive(true);
// GameObject.Find("magicWorld_btn").transform.FindChild("magicWorld").gameObject.GetComponent<Button>().enabled = true;
// GameObject.Find("fanWorld_btn").transform.FindChild("fanWorld").gameObject.GetComponent<Button>().enabled = true;
// GameObject.Find("likeRemenberWord_btn").transform.FindChild("likeRemenberWords").gameObject.GetComponent<Button>().enabled = true;
// GameObject.Find("babyArea_btn").transform.FindChild("babyArea").gameObject.GetComponent<Button>().enabled = true;

// }
//}

}

posted @ 2016-07-18 16:32  Fei非非  阅读(179)  评论(0编辑  收藏  举报