【Unity】2D展示弧形滚动条
创始人
2025-06-01 01:51:35
0

2D 弧形滚动条

public List songItems = new List();
    public List rightSongItems = new List();
    //List itemAngles = new List();
    List drageAngles = new List();
    List cengNums = new List() { 1, 2, 3, 4, 5, 4, 3, 2, 1 };

    int songIdex = 0;
    //List itemIndexs = new List() { 0, 1, 2, 3, 4, 5, 6,7,8};
    float piAngle = 0.6f;

    public GameObject openAiBtn = null;
    private void Awake()
    {

    }
    private void Start()
    {
        //left
        for (int i = 0; i < songItems.Count; i++)
        {
            //double angle = Util.GetPIAngle(songItems[i].transform.localPosition);
            double angle = Math.PI * (piAngle + 0.1f * i);
            var vct = Util.GetAngleToPos(angle) * distance;
            songItems[i].transform.localPosition = vct;
            rightSongItems[i].transform.localPosition = new Vector3(-vct.x, vct.y);

            drageAngles.Add(angle);
            //itemAngles.AddRange(drageAngles);
            songItems[i].transform.SetSiblingIndex(cengNums[i]);
            rightSongItems[i].transform.SetSiblingIndex(cengNums[i]);
            var num = GetSongIdex(i - 4);
            //Debug.Log("songIndex" + num);
            songItems[i].transform.Find("Text").GetComponent().text = Manager.Instance.songEasyDatas[1001 + num].songName;

            rightSongItems[i].transform.Find("Text").GetComponent().text = Manager.Instance.songEasyDatas[1001 + num].songName;
        }
        RefeshDebug();
        //ClickOpenAI();
        GetVctToOlure((float)(5 * 0.1f * Math.PI / addNum));

        h_Index = 2;
        InitBtn();
    }

    void RefeshDebug()
    {
        openAiBtn.SetActive(Manager.isDebug);
    }
    private void OnEnable()
    {
        h_Index = 2;
        RefreshDown();
        DebugEvent.Register(RefeshDebug);
    }

    int GetSongIdex(int num)
    {
        if (num < 0)
        {
            num += Manager.Instance.songEasyDatas.Count;
        }
        else if (num >= Manager.Instance.songEasyDatas.Count)
        {
            num -= Manager.Instance.songEasyDatas.Count;
        }
        //Debug.Log("Reture_Song" + num);
        return num;
    }

    void Update()
    {
        BaseUpdate();
    }
    int numX = 0;
    public float addNum = 0.000002f;
    public float distance = 500;

//拖拽输入
    //逆向围绕中心点移动
    public void GetVctToOlure(float num)
    {
        List listItems = new List();
        for (int i = 0; i < songItems.Count; i++)
        {
            listItems.Add(songItems[i]);
            double fAngle = drageAngles[i];
            fAngle -= addNum * num;


            if (fAngle < 0.55f * Math.PI)
            {
                fAngle += (float)(0.9f * Math.PI);
                //Debug.Log("+fAngle-" + fAngle);
                RefreshIndex(1);
                //isUpdate = true;
                songItems[i].transform.Find("Text").GetComponent().text = Manager.Instance.songEasyDatas[1001 + GetSongIdex(songIdex + 4)].songName;
                rightSongItems[i].transform.Find("Text").GetComponent().text = Manager.Instance.songEasyDatas[1001 + GetSongIdex(songIdex + 4)].songName;
            }
            if (fAngle > 1.45f * Math.PI)
            {
                fAngle -= (float)(0.9f * Math.PI);
                //Debug.Log("+fAngle+" + fAngle);
                RefreshIndex(-1);
                //isUpdate = true;
                songItems[i].transform.Find("Text").GetComponent().text = Manager.Instance.songEasyDatas[1001 + GetSongIdex(songIdex - 4)].songName;
                rightSongItems[i].transform.Find("Text").GetComponent().text = Manager.Instance.songEasyDatas[1001 + GetSongIdex(songIdex - 4)].songName;
            }

            drageAngles[i] = fAngle;

            var vct = Util.GetAngleToPos(fAngle) * distance;
            songItems[i].transform.localPosition = vct;
            rightSongItems[i].transform.localPosition = new Vector3(-vct.x, vct.y);
        }
        for (int i = 0; i < listItems.Count - 1; i++)
        {
            for (int j = 0; j < listItems.Count - 1 - i; j++)
            {
                if (listItems[j].transform.localPosition.y > listItems[j + 1].transform.localPosition.y)
                {
                    var temp = listItems[j];
                    listItems[j] = listItems[j + 1];
                    listItems[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < listItems.Count; i++)
        {
            listItems[i].transform.SetSiblingIndex(cengNums[i]);
            if (i == 4)
            {
                lightNum = int.Parse(listItems[i].name);
            }
        }
        for (int i = 0; i < songItems.Count; i++)
        {
            int numIndex = songItems[i].transform.GetSiblingIndex();
            rightSongItems[i].transform.SetSiblingIndex(numIndex);
        }

        RreshIndex();
    }


    void RefreshIndex(int num)
    {
        int numA = GetSongIdex(songIdex += num);
        songIdex = numA;
        Debug.Log("fact" + numA);
    }
 

相关内容

热门资讯

蔬菜中的“维 C 之王”竟是它... 在蔬菜界中,甜椒以其鲜艳的色彩和清脆的口感,常常被当作菜肴的点缀。无论是青红黄相间的炒菜,还是沙拉中...
文化中国行丨快来围观!中国古代... 本文转自【央视新闻客户端】; 除了划龙舟,包粽子也是端午节传承千年的经典习俗,承载着深厚的文化底蕴。...
重庆朝天门码头,轿夫抬游客上岸... 朝天门,位于中国重庆渝中半岛嘉陵江与长江交汇处,重庆以前的十七座古城门之一,属于沿江九门中的一座。现...
原创 刷... 端午撞上六一的初夏,阳光把日子酿得滚烫,而武安的山水里藏着能让时光慢下来的魔法——刷到这条推送的你,...
详细攻略:从长沙出发自驾游黄山... 自驾游无疑是探索中国美丽风景的一种绝佳方式,而黄山,作为中国最著名的山脉之一,以其雄伟的山势、奇特的...
西北青甘大环线必玩景点,甘南省... 当辽阔的戈壁在窗外铺展,当圣洁的雪山在云端闪耀,当五彩的经幡在风中翻飞,我知道,我的灵魂正在被西北的...
端午节不止安康,还有法门文化景... 端午小长假第三天,法门文化景区气候宜人,游览体验度满分。景区各岗位员工坚守岗位,不辞辛劳,不仅传递节...
原创 生... 标题:生煎包,馅料的秘密,皮薄馅大有汤汁,一口下去汤汁儿直流! 在这个快节奏的时代,美食不仅仅是味...
“粤”上新台阶丨水果千千万 广... 谁都知道荔枝是“岭南佳果”。但在广东,如果你还只是把荔枝当成一种普通水果,那可就大大低估了广东人对它...
原创 我... 我家做芹菜炒蘑菇这菜,从来不放肉,一把芹菜,再配上些鲜蘑菇,清清淡淡但又营养满满,而且特别下饭。炒这...
吕文扬与元诚的新疆游记:天山徒... 飞机降落在乌鲁木齐地窝堡国际机场时,吕文扬透过舷窗看到了远处连绵的雪山轮廓。他拍了拍身旁正在打瞌睡的...
四川6天旅游路线推荐:四川报团... 四川6天旅游路线推荐:四川报团旅游6天费用,超实用干货分享!超棒攻略 四川之旅,一场味蕾与心灵的盛宴...
海口火山荔枝王采摘攻略来了!3... 🌞🌞🌞 湛蓝湛蓝的天空 大朵大朵的云彩 海口的夏天 空气里满是荔枝香甜~ 黝黑火山石上孕育的海口火...
假期余额不足,这些地方依然有惊... 传统 过端午,迎世运,游公园城市 “五月五,是端阳,门插艾,香满堂。”当端午的艾香浸润天府新区的街巷...
和朋友去张家界5日旅游跟团报价... 最近刚计划了一次张家界的五天四晚旅行,想着既能放松心情又能看看大自然的鬼斧神工。张家界旅游五天四晚旅...
机票价格“跳水” 突现1.1折... 近期,机票价格处于“跳水季”。记者在多家在线旅游平台上看到,目前从杭州萧山国际机场出发前往三亚、成都...