您的位置:首页 > 移动开发 > Unity3D

一个圆环上有好多控件,实现左右滑动以及近大远小的效果

2016-09-12 10:24 603 查看
一个圆环上有好多个可点击控件-按钮,如何实现左右滑动以及近大远小的效果

效果如下图:



using UnityEngine;
using System.Collections;

public class zhuandong : MonoBehaviour {

public GameObject circle;//以下几个按钮都放在圆环上
public GameObject imagebtn;
public GameObject wordbtn;
public GameObject videobtn;
public GameObject pptbtn;
public GameObject excelbtn;
public GameObject pdfbtn;

private Vector2 first = Vector2.zero;//鼠标按下的位置
private Vector2 second = Vector2.zero;//鼠标拖动的位置

public GameObject[] skillArray = new GameObject[6];//获取6个子控件

void Update()
{
foreach (GameObject i in skillArray)//近大远小,根据这6个按钮所在位置的y轴进行缩放
{
//最上边空间缩小一倍
if (i.transform.position.y > 0.24)
{
i.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
}
if (i.transform.position.y <= 0.24 && i.transform.position.y > 0)
{
i.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
}
if (i.transform.position.y >= -0.24 && i.transform.position.y <= 0)
{
i.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
}
if (i.transform.position.y < -0.24 )
{
i.transform.localScale = new Vector3(1.2f, 1.2f, 1.2f);
}
// print("y:"+i.transform.position.y);
}
}

void OnGUI()
{
if (Event.current.type == EventType.MouseDown)//鼠标按下事件
{
first = Event.current.mousePosition;
}
if (Event.current.type == EventType.MouseDrag)//鼠标拖动事件
{
second = Event.current.mousePosition;
if (second.x < first.x)
{
print("left");
circle.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
imagebtn.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
wordbtn.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
videobtn.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
pptbtn.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
excelbtn.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
pdfbtn.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
}
if (second.x > first.x)
{
print("right");
circle.transform.Rotate(Vector3.forward * Time.deltaTime * 150);
imagebtn.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
wordbtn.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
videobtn.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
pptbtn.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
excelbtn.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
pdfbtn.transform.Rotate(Vector3.forward * Time.deltaTime * -150);
}
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d