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;
sin(HalfAngle)
缩放。最后一个值始终是
cos(HalfAngle)
。因此,您应该使用类似的东西:
UnityEngine.Quaternion(0, sin(0.5 * MazePos[ATM,3] * (PI/180)) ,0, cos(0.5 * MazePos[ATM,3] * (PI/180)))