【问题标题】:i want to add space between my generated prefabs我想在我生成的预制件之间添加空间
【发布时间】:2020-06-09 23:52:03
【问题描述】:

我正在开发 unity2D 游戏并且正在实例化预制件,我正在以一种很好的方式生成我的预制件,但问题是当它们生成时我想要它们之间的空间,我的意思是当预制件生成时我想添加空间在它们之间的位置 x,有我的代码:

public class WaveSpawn : MonoBehaviour
{
   public GameObject[] easyWaves;
     public GameObject[] mediumWaves;
     public GameObject[] hardWaves;
     public GameObject Player;

    // Start is called before the first frame update
    void Start()
    {
        SpawnWave();
    }

    // Update is called once per frame
    void Update()
    {

    }

    public void SpawnWave()
    {
 float CharacSpeed = Player.GetComponent<charachter>().moveSpeed;
 float spacing = 0.1f;
        if(CharacSpeed < 11){

            Instantiate(easyWaves[Random.Range(0,easyWaves.Length)], new Vector3(gameObject.transform.position.x, gameObject.transform.position.y,0) , Quaternion.identity);


        }
        else if(CharacSpeed >= 11 && CharacSpeed < 14){

            Instantiate(mediumWaves[Random.Range(0,mediumWaves.Length)], new Vector3(gameObject.transform.position.x , gameObject.transform.position.y,0), Quaternion.identity);

      }
         else if(CharacSpeed >= 14){
             Instantiate(hardWaves[Random.Range(0,hardWaves.Length)], new Vector3(gameObject.transform.position.x, gameObject.transform.position.y,0), Quaternion.identity);

          }

    } 
}

有什么帮助吗?请注意,我的预制件生成正确,问题仅在位置 x

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    在我看来,您的代码只会从您的一个 GameObject 数组中生成一个预制件。它的作用是:

    • 看看 CharacSpeed
    • 根据 CharacSpeed,从 easyWaves、mediumWaves 或 hardWaves 中实例化一个随机选择的 GameObject。

    所以,我不确定你所说的间隔预制件是什么意思,因为只生成了一个预制件。

    试试这个:

    public void SpawnWave()
    {  
        GameObject[] selectedWaves = new GameObject[];
        float CharacSpeed = Player.GetComponent<charachter>().moveSpeed;  
        float spacing = 0.1f;
    
        if(CharacSpeed < 11){
            selectedWaves = easyWaves;
        }
        else if(CharacSpeed >= 11 && CharacSpeed < 14){
            selectedWaves = mediumWaves;
        }
        else if(CharacSpeed >= 14)
        {
             selectedWaves = hardWaves;
        }
    
        for (int i = 0; i < selectedWaves.Length; i++) {
            Instantiate(selectedWaves[Random.Range(0,selectedWaves.Length)], new Vector3(gameObject.transform.position.x + (spacing * i), gameObject.transform.position.y,0) , Quaternion.identity);
        }
    }
    

    然后您应该能够通过更改 float spacing = 0.1f 值来调整间距量。

    这假设您想要生成与 GameObject 数组中包含的一样多的预制件(并且可能想要多次生成相同的预制件)。如果没有,请将 for 循环中的 selectedWaves.Length 更改为您想要生成的任何数量的预制件。

    【讨论】:

    • 它们使用此代码在同一位置生成,并且它们开始变得无序,我的代码预制件生成正确,我不知道是什么问题,还是谢谢你
    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2020-02-24
    • 2018-11-25
    相关资源
    最近更新 更多