如何在Unity中以“径向样式”排列方式放置对象?

我试图在Unity中编写一个脚本,该脚本围绕播放器直接面对的对象创建一种径向菜单,但是菜单中的按钮数量是一个变量。


我已经生成了与对象应该出现在主菜单上的角度足够容易的角度...


            // int buttonCount = number of buttons

            float buttonWidth = 360 / buttonCount;

            for (int i = 1; i <= buttonCount; i++)

            {

                float maxAngle = buttonWidth * i;

                float minAngle;

                if (i == 0)

                {

                    minAngle = 0f;

                }

                else if (i == buttonCount)

                {

                    minAngle = 360 - buttonWidth;

                }

                else

                {

                    minAngle = buttonWidth * (i - 1);

                }

                float buttonAngle = (minAngle + maxAngle) / 2;

            }

...但是现在我试图将按钮对象围绕中央菜单对象放置在相应的角度,我不知道怎么办?


红糖糍粑
浏览 211回答 2
2回答

胡子哥哥

此函数将要让按钮四处移动的对象,玩家的游戏对象作为参数,以便您可以将新按钮朝向玩家,您希望按钮所处的角度以及半径(按钮与之之间的距离) buttonCenter)。它的输出是按钮在世界空间中的位置。您可以为要添加的每个按钮调用它。Vector3 positionButton(GameObject buttonCenter, GameObject player, float angle, float radius) {&nbsp; &nbsp; //get the up and right vectors from the player object so we can orient the buttons&nbsp; &nbsp; Vector3 up = player.transform.up;&nbsp; &nbsp; Vector3 right = player.transform.right;&nbsp; &nbsp; angle = Mathf.Deg2Rad * angle;&nbsp; //convert degrees to radians.&nbsp; radians=degrees * 2pi / 360&nbsp; &nbsp; //cos(angle) give an x coordinate, on a unit circle centered around 0&nbsp; &nbsp; //sin(angle) is the y coordinate on the unit circle&nbsp; &nbsp; //take those values, multiply them by the up and right vectors to orient them to the player,&nbsp;&nbsp; &nbsp; //multiply by the radius to move them the correct distance from the buttoncenter,&nbsp;&nbsp; &nbsp; //and add the buttoncenter position so they circle around the correct point&nbsp; &nbsp; Vector3 buttonPos =buttonCenter.transform.position +&nbsp; (radius * right * Mathf.Cos(angle)) + (radius* up * Mathf.Sin(angle));&nbsp; &nbsp; return buttonPos;}

SMILET

首先,为每个按钮定义一个原点和距离。有了角度后,您可以应用三角函数,该函数应允许您在给定角度,距离和原点的情况下找到点的坐标。该点将由角度的cos()和sin()定义。
打开App,查看更多内容
随时随地看视频慕课网APP