为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
红糖糍粑 2021-05-09 12:44:25
我试图在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;            }...但是现在我试图将按钮对象围绕中央菜单对象放置在相应的角度,我不知道怎么办?
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

此函数将要让按钮四处移动的对象,玩家的游戏对象作为参数,以便您可以将新按钮朝向玩家,您希望按钮所处的角度以及半径(按钮与之之间的距离) buttonCenter)。它的输出是按钮在世界空间中的位置。您可以为要添加的每个按钮调用它。


Vector3 positionButton(GameObject buttonCenter, GameObject player, float angle, float radius) {

    //get the up and right vectors from the player object so we can orient the buttons

    Vector3 up = player.transform.up;

    Vector3 right = player.transform.right;


    angle = Mathf.Deg2Rad * angle;  //convert degrees to radians.  radians=degrees * 2pi / 360


    //cos(angle) give an x coordinate, on a unit circle centered around 0

    //sin(angle) is the y coordinate on the unit circle

    //take those values, multiply them by the up and right vectors to orient them to the player, 

    //multiply by the radius to move them the correct distance from the buttoncenter, 

    //and add the buttoncenter position so they circle around the correct point

    Vector3 buttonPos =buttonCenter.transform.position +  (radius * right * Mathf.Cos(angle)) + (radius* up * Mathf.Sin(angle));

    return buttonPos;

}


查看完整回答
反对 回复 2021-05-23
?
SMILET

TA贡献1796条经验 获得超4个赞

首先,为每个按钮定义一个原点和距离。有了角度后,您可以应用三角函数,该函数应允许您在给定角度,距离和原点的情况下找到点的坐标。该点将由角度的cos()和sin()定义。



查看完整回答
反对 回复 2021-05-23
  • 2 回答
  • 0 关注
  • 210 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信