Unity球形分佈+UGUI滑屏切圖(惡趣味)

歡迎加入Unity業內qq交流羣:956187480

qq掃描二維碼加羣


demo鏈接:https://download.csdn.net/download/qq_37310110/12068839

https://github.com/romantic123fly/SlidingScreenAndSurfaceBall

今天以這個惡趣味的小demo終結2019年的最後一天,希望明年大家都加官進爵,升職加薪。

 

一:球形分佈

 /// <param name="bornPointNum">實例個數</param>
   /// <param name="radius">球體半徑</param>
    public void CreatPointOnSphere(int bornPointNum, float radius)
    {
        //生成
        for (int i = 0; i < bornPointNum; i++)
        {
            float y = (float)i * 2.0f / bornPointNum + (1 / bornPointNum) - 1.0f;
            float r = Mathf.Sqrt(1.0f - y * y);
            float  phi = i * 2.4f;
            Vector3 pos = new Vector3(Mathf.Cos(phi) * r * radius, y * radius, Mathf.Sin(phi) * r * radius); 
            BornPoint(pos, i);
        }
    }
   
    void BornPoint(Vector3 pos, int tempIndex)
    {
        GameObject obj = Instantiate( Resources.Load<GameObject>("Cube"));
        obj.GetComponent<MeshRenderer>().material = Resources.Load<Material>("Materials/"+ tempIndex%5);
        obj.transform.SetParent(container);
        obj.transform.localPosition = pos;
        obj.name = tempIndex+"";
        transforms.Add(obj.transform);
    }

二:鼠標控制

RaycastHit m_hitInfo;
    private void Update()
    {
        if (container != null)
        {
            if (Input.GetMouseButtonUp(0)) //點擊鼠標右鍵
            {
                object ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                bool isHit = Physics.Raycast((Ray)ray, out hit);
                if (isHit)
                {
                    Debug.Log(hit.transform.name);
                    GameManager.GetInstance().SetTargetItemIndex(int.Parse( hit.transform.name));
                }
            }

            if (Input.GetMouseButton(0)&& !EventSystem.current.IsPointerOverGameObject())
            {
                float hor = Input.GetAxis("Mouse X");
                float ver = Input.GetAxis("Mouse Y");
                container.Rotate(new Vector3(ver, -hor, 0) * Time.deltaTime * 100, Space.World);
            }
        }
        if (transforms!=null&& transforms.Count>0)
        {
            foreach (var item in transforms)
            {
                item.LookAt(Camera.main.transform);
            }
        }
    }

三:滑屏切圖

滑屏切圖這個是參考網上的,寫的挺複雜的後期會優化一下,沒有用插件用的unity的AnimationCurve組件


歡迎加入Unity業內qq交流羣:956187480

qq掃描二維碼加羣

 

發佈了110 篇原創文章 · 獲贊 37 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章