代码之家  ›  专栏  ›  技术社区  ›  Daniel Lip

为什么所有的速度值都是0?

  •  0
  • Daniel Lip  · 技术社区  · 6 年前
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Spin : MonoBehaviour
    {
        public GameObject prefabToRotate;
        [Range(1, 100)]
        public int numberOfObjects = 5;
        [Range(1, 500)]
        public float[] speeds;
        public bool randomNumbersOfObjects = false;
        public bool randomSpeed = false;
    
        private List<GameObject> instantiatedObjects = new List<GameObject>();
    
        // Start is called before the first frame update
        void Start()
        {
            speeds = new float[numberOfObjects];
            if(randomNumbersOfObjects == true)
            {
                numberOfObjects = Random.Range(1, 100);
            }
            if(randomSpeed == true)
            {
                for(int i = 0; i < speeds.Length; i++)
                {
                    speeds[i] = Random.Range(1, 500);
                }
            }
            for(int i = 0; i < numberOfObjects; i++)
            {
                GameObject go = Instantiate(prefabToRotate);
                instantiatedObjects.Add(go);
            }
        }
    
        // Update is called once per frame
        void Update()
        {
            for (int i = 0; i < numberOfObjects; i++)
            {
                instantiatedObjects[i].transform.Rotate(Vector3.down, speeds[i] * Time.deltaTime);
            }
        }
    }
    

    我如何从范围滑块中获得随机数和随机速度?1100和1500?我也希望能够改变这个值的滑块在更新,它将在实时更新,同时运行游戏的对象数量和随机速度。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sean Carey    6 年前

    将“速度”数组的长度设置为“numberOfObjects”,然后更改“numberOfObjects”的值,但“速度”数组仍然等于“numberOfObjects”的旧值。尝试设置“速度”的长度

    if (randomNumbersOfObjects == true)
    {
        numberOfObjects = Random.Range(1, 100);
    }
    speeds = new float[numberOfObjects];