如何在unity3d中制作具有此效果的菜单?

时间:2015-06-14 14:52:28

标签: scroll unity3d menu

抱歉,我会尽力解释一下。

我想制作一个滑动菜单,您可以在其中选择一个角色。我希望中心的角色大小增加,知道这是当前角色。当您想要选择一个角色时,可以在Crossy Road的游戏中看到效果。

很抱歉,我无法上传图片,因为我是论坛的新用户

2 个答案:

答案 0 :(得分:0)

我想我可以帮助你,而不需要太多借用的代码。这里有两种可能性:

  1. 您有一个透视摄像头,因此“选定”项目可以更靠近摄像头。
  2. 你有一台正交相机,所以你必须进行缩放。
  3. 透视:

    List<GameObject> characters; //contains all character.
    int selectedIndex = 0;      //index to the selected character.
    float spacing = 10;         //space between chars
    
    void Update()
    {
        if(Input.GetKeyDown("RightArrow"))
        {
            selectIndex++;
            ApplyChanges();
        }
    
         if(Input.GetKeyDown("LeftArrow"))
        {
            selectIndex--;
            ApplyChanges();
        } 
    }
    
    void ApllyChanges()
    {
        // Make sure the selected index is within range and then space the characters.
        selectedIndex = selectedIndex % character.Count();
        SpaceCharacters();
    }
    
    void SpaceCharacters()
    {
        for(int i = 0; i < characters.Count(); ++i)
        {
            // characters on the left will have a negative spacing and so will be placed to the left and vice versa for characters on the right.
            int offset = i - selectedIndex;
    
            characters[i].transform.position = new Vector3(offset * spacing, 0, 0);
        }
        // Move the selected character closer.
        characters[selectedIndex].transform.position = new Vector3(0,0,spacing);
    }
    

    对于正交相机,您需要将选择字符transform.scale设置为更大的矢量。

    这不会动画任何东西或看起来很酷。此代码只会将您的角色捕捉到位。

答案 1 :(得分:0)

我采用的解决方案是将对象附加到scrool rect中的透明按钮,以便使用scrool rect界面管理3d对象。

在这里您可以找到使用scrool rect的官方文档:http://docs.unity3d.com/Manual/script-ScrollRect.html

也许我的资产可以为您服务;)

https://www.assetstore.unity3d.com/en/#!/content/60233