企业:实例化gamobject的旋转是错误的

问题描述 投票:0回答:1
public class Maze1 : MonoBehaviour{ public GameObject ATMPrmoufa; // MazePos[ No. , x/y/z....] v-int-v // x , y , z , RotationY public float[,] MazePos = { { -237.4f , -4.625f , -52.60674f , 180}, { -187.1933f , -4.625f , -66.2f , 90}, { -167.6068f , -4.625f , -50.4f , -90}, { -141.4f , -4.625f , -46.60674f , 180}, { -137.6068f , -4.625f , -32.4f , -90}, { -203.7f , -4.625f , -46.706f , 180}, { -203.7067f , -4.625f , -35.4f , -90}, { -187.1933f , -4.625f , -29.4f , 90}, { -215.7067f , -4.625f , -20.4f , -90}, { -160.1933f , -4.625f , -17.4f , 90}, }; int ATM; public GameObject[] ATMSPR= {null,null,null}; public bool FirstRun = true; public void MazeStart() { List<int> numbers = new List<int>(); for (int i = 0; i <= 9; i++) { numbers.Add(i); } System.Random rand = new System.Random(); for (int i = 0; i < 3; i++) { ATM = numbers[rand.Next(numbers.Count)]; numbers.Remove(ATM); SpawnATM(ATM, ATMSPR[i]); } for (int i = 0; i < 7; i++) { ATM = numbers[rand.Next(numbers.Count)]; numbers.Remove(ATM); SpawnATM(ATM, ATMPrmoufa); } } public void SpawnATM(int ATM, GameObject pr,) { UnityEngine.Vector3 ATMPos = new UnityEngine.Vector3(MazePos[ATM,0], MazePos[ATM,1], MazePos[ATM,2]); UnityEngine.Quaternion CoinQ = new UnityEngine.Quaternion(0,MazePos[ATM,3],0,0); Instantiate(pr, ATMPos, CoinQ); }

我还检查了其他问题,但没有发现任何适合我的案件的问题。

Yeah,您是四元初始化有点脱落_(正确的想法,错误的单位)_

首先,您的旋转以度为单位。您需要将其转换为radian。

Radians = MazePos[ATM,3] * (PI / 180.0);
四元基因使用半角,而不是全角,例如

HalfAngle = Radians * 0.5;

c# unity-game-engine instantiation
1个回答
0
投票
sin(HalfAngle)

缩放。最后一个值始终是

cos(HalfAngle)

。因此,您应该使用类似的东西:

UnityEngine.Quaternion(0, sin(0.5 * MazePos[ATM,3] * (PI/180)) ,0, cos(0.5 * MazePos[ATM,3] * (PI/180)))

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.