C# 如何调用Unity3D中的重复和销毁对象(5.1)
我正在尝试制作一款与crossyroads类似的游戏,比如无限级生成/敌人生成。在我的代码中,地面和敌人这一代似乎一切都很好,而且在我玩的时候也很有效。但是我不能让新产生的敌人重复他们自己。我尝试将“调用重复函数”放在voidstart、voidupdate和for循环中。但它不起作用。它只发出一个敌人 然后我就无法找到新创建的对象(飞机/敌人),这样我就可以在它们离开屏幕时摧毁它们 我一定是用错误的方式构造了代码,但我想不出来C# 如何调用Unity3D中的重复和销毁对象(5.1),c#,unity3d,3d,C#,Unity3d,3d,我正在尝试制作一款与crossyroads类似的游戏,比如无限级生成/敌人生成。在我的代码中,地面和敌人这一代似乎一切都很好,而且在我玩的时候也很有效。但是我不能让新产生的敌人重复他们自己。我尝试将“调用重复函数”放在voidstart、voidupdate和for循环中。但它不起作用。它只发出一个敌人 然后我就无法找到新创建的对象(飞机/敌人),这样我就可以在它们离开屏幕时摧毁它们 我一定是用错误的方式构造了代码,但我想不出来 public class levelGenerationS
public class levelGenerationScrip : MonoBehaviour {
public GameObject greenPlane;
public GameObject bluePlane;
public GameObject brownPlane;
public GameObject testEnemy;
int firstRand;
int secondRand;
int distPlayer = 12 ;
int enemyDist= 7;
Vector3 intPos = new Vector3 (0,0,0);
Vector3 enemyPos = new Vector3 (0,0,0);
Vector3 enemyPos2 = new Vector3 (0,0,0);
void Start () {
}
void Update () {
if (Input.GetKeyDown("w"))
{
firstRand = Random.Range(1,4);
if(firstRand == 1)
{
secondRand = Random.Range(1,1);
for(int i = 0; i < secondRand; i++)
{
intPos = new Vector3(-2.3f,0.5f,distPlayer);
enemyPos = new Vector3 (7,1.51f,enemyDist);
distPlayer += 1 ;
enemyDist += 1;
GameObject greenIns = Instantiate(greenPlane) as GameObject;
greenIns.transform.position = intPos ;
GameObject testEn = Instantiate (testEnemy) as GameObject;
testEn.transform.position = enemyPos ;
testEn.GetComponent<Rigidbody> ().AddForce(new Vector3 (-350, 0, 0));
//InvokeRepeating ("testEn",1,1.5f);
}
}
if(firstRand == 2)
{
secondRand = Random.Range(1,1);
for(int i = 0; i < secondRand; i++)
{
intPos = new Vector3(-2.3f,0.5f,distPlayer);
enemyPos2 = new Vector3 (-11,1.51f,enemyDist);
distPlayer += 1 ;
enemyDist += 1;
GameObject blueIns = Instantiate(bluePlane) as GameObject;
blueIns.transform.position = intPos ;
GameObject testEn = Instantiate (testEnemy) as GameObject;
testEn.transform.position = enemyPos2 ;
testEn.GetComponent<Rigidbody> ().AddForce(new Vector3 (+350, 0, 0));
}
}
if(firstRand == 3)
{
secondRand = Random.Range(1,1);
for(int i = 0; i < secondRand; i++)
{
intPos = new Vector3(-2.3f,0.5f,distPlayer);
enemyPos = new Vector3 (7,1.51f,enemyDist);
distPlayer += 1 ;
enemyDist += 1;
GameObject brownIns = Instantiate(brownPlane) as GameObject;
brownIns.transform.position = intPos ;
GameObject testEn = Instantiate (testEnemy) as GameObject;
testEn.transform.position = enemyPos2 ;
testEn.GetComponent<Rigidbody> ().AddForce(new Vector3 (+400, 0, 0));
}
}
}
}
公共类级别GenerationsCrip:MonoBehavior{
公共游戏机;
公共游戏机;
公共游戏对象布朗普兰;
公共游戏对象测试引擎;
int firstRand;
int secondRand;
int-distPlayer=12;
int-enemyDist=7;
向量3 intPos=新向量3(0,0,0);
Vector3 enemyPos=新Vector3(0,0,0);
Vector3 enemyPos2=新Vector3(0,0,0);
无效开始(){
}
无效更新(){
if(Input.GetKeyDown(“w”))
{
firstRand=随机范围(1,4);
if(firstRand==1)
{
secondRand=随机范围(1,1);
for(int i=0;i
}你的标签上写着“Unity”,我想你的意思是写上“Unity3d”
实例化游戏对象后,将它们放入全局列表变量中,现在您可以随时引用它们
// global var
List<GameObject> objs = new List<GameObject>();
// inside function
GameObject blueIns = Instantiate(bluePlane) as GameObject;
objs.Add(blueIns);
GameObject testEn = Instantiate (testEnemy) as GameObject;
objs.Add(testEn);
//全局变量
List objs=new List();
//内部功能
GameObject blueIns=实例化(bluePlane)为GameObject;
objs.Add(blueIns);
GameObject testEn=实例化(testEnemy)为GameObject;
objs.Add(testEn);
至于你的调用重复问题,你还没有公布你对它的使用情况,所以我无法告诉你你做错了什么。你的标签中的“Unity”我认为你的意思是“Unity3d”
实例化游戏对象后,将它们放入全局列表变量中,现在您可以随时引用它们
// global var
List<GameObject> objs = new List<GameObject>();
// inside function
GameObject blueIns = Instantiate(bluePlane) as GameObject;
objs.Add(blueIns);
GameObject testEn = Instantiate (testEnemy) as GameObject;
objs.Add(testEn);
//全局变量
List objs=new List();
//内部功能
GameObject blueIns=实例化(bluePlane)为GameObject;
objs.Add(blueIns);
GameObject testEn=实例化(testEnemy)为GameObject;
objs.Add(testEn);
至于你的调用重复问题,你还没有公布你对它的使用情况,所以我不能告诉你你做错了什么。嗨!我想在实例化敌人之后,继续在同一位置制造敌人。。我试着用“InvokeRepeating(“testEn”,1,1.5f);”来实现它,但我想它只适用于一个函数..thnx用于列表的帮助。是的,你不能将游戏对象传递到invoke,它不知道你想用它做什么。嗨!我想在实例化敌人之后,继续在同一位置制造敌人。。我试着用“InvokeRepeating(“testEn”,1,1.5f);”来实现它,但我想它只适用于一个函数..thnx用于列表的帮助。是的,你不能将游戏对象传递到invoke,它不知道你想用它做什么。嗨!我想在实例化敌人之后,继续在同一位置制造敌人。。我试着用“InvokeRepeating(“testEn”,1,1.5f);”来实现它,但我想它只适用于一个函数..thnx用于列表帮助。是的,你不能将游戏对象传递给invoke,它不知道你想用它做什么。