请选择 进入手机版 | 继续访问电脑版

查看: 513|回复: 5

[求助] 关于障碍物生成问题

[复制链接]

1

主题

5

帖子

80

贡献

初级UU族—2级

Rank: 2

积分
80
发表于 2018-1-12 07:29:53 | 显示全部楼层 |阅读模式
这是我生成障碍物的方法...问题是,我设置的Plane是隔一段时间就向前移动的,可是生成障碍物还是在原地,怎么才能跟随Plane的移动,在其上方生成障碍物。
[C#] 纯文本查看 复制代码
 while (true)
        {
            for (int i = 0; i < hazardCount; i++)
            {
                Vector3 spawnPosition = new Vector3(Random.Range(-spawnValue.x, spawnValue.x),
                                                    Random.Range(spawnValue.y-400, spawnValue.y),
                                                                                spawnValue.z);

                Quaternion spawnRotation = Quaternion.identity;
                Instantiate(hazard, spawnPosition, spawnRotation);
                yield return new WaitForSeconds(spawnWait);
            }

9

主题

148

帖子

1850

贡献

中级UU族—2级

Rank: 5Rank: 5

积分
1850
发表于 2018-1-12 09:11:18 | 显示全部楼层
把障碍物设置为Plane的子物体。

1

主题

5

帖子

80

贡献

初级UU族—2级

Rank: 2

积分
80
 楼主| 发表于 2018-1-15 02:56:24 | 显示全部楼层
LiuYuan 发表于 2018-1-12 09:11
把障碍物设置为Plane的子物体。

非常感谢你的回答,我试了下,这样Plane第一次移动时会跟随,实例化出来的障碍物也是其子物体,然而第二次移动时障碍物还是在原地生成,有点不明白为什么。
[C#] 纯文本查看 复制代码
Vector3 spawnPosition = new Vector3(Random.Range(-spawnValue.x, spawnValue.x),Random.Range(spawnValue.y-400, spawnValue.y),spawnValue.z);



                Quaternion spawnRotation = Quaternion.identity;
				GameObject myhazard =  Instantiate(hazard, spawnPosition, spawnRotation) as GameObject;
				myhazard.transform.parent = father.transform;//GameObject father:plane


9

主题

148

帖子

1850

贡献

中级UU族—2级

Rank: 5Rank: 5

积分
1850
发表于 2018-1-15 07:03:53 | 显示全部楼层
whtwht 发表于 2018-1-15 02:56
非常感谢你的回答,我试了下,这样Plane第一次移动时会跟随,实例化出来的障碍物也是其子物体,然而第二 ...

我不太明白你的需求,可以说一下你需要实现什么效果吗?我现在理解的是,生成Plane作为地面,地面上会有障碍物,你希望障碍物跟随Plane一起移动。

1

主题

5

帖子

80

贡献

初级UU族—2级

Rank: 2

积分
80
 楼主| 发表于 2018-1-15 07:24:32 | 显示全部楼层
LiuYuan 发表于 2018-1-15 07:03
我不太明白你的需求,可以说一下你需要实现什么效果吗?我现在理解的是,生成Plane作为地面,地面上会有 ...

[C#] 纯文本查看 复制代码
Vector3 spawnPosition = new Vector3(Random.Range(-spawnValue.x, spawnValue.x),
                                                   Random.Range(spawnValue.y-400, spawnValue.y),
                                                                               spawnValue.z);
 
多谢你提供的思路,现在已经可以了。我要实现的效果就是   地面上不停生成障碍物,并且在地面移动后,障碍物依然在地面上生成。我之前设置的坐标是上面这个,这个坐标导致我生成的障碍物始终在这个范围里,即使成为其子物体,也不会“长”在地面上。现在我将坐标改成父物体的坐标就可以了。。可能算不上是什么问题,不过还是很感谢你给我回答。
[C#] 纯文本查看 复制代码
 Vector3 spawnPosition = new Vector3(Random.Range(father.transform.position.x+720, father.transform.position.x-720)
                                                   , Random.Range(father.transform.position.y+600, father.transform.position.y+150)
                                                   , Random.Range(father.transform.position.z, father.transform.position.z+500));


9

主题

148

帖子

1850

贡献

中级UU族—2级

Rank: 5Rank: 5

积分
1850
发表于 2018-1-15 07:28:24 | 显示全部楼层
whtwht 发表于 2018-1-15 07:24
[mw_shl_code=csharp,false]Vector3 spawnPosition = new Vector3(Random.Range(-spawnValue.x, spawnVal ...

我也经常会犯一些小错误,容易进入死胡同。加油!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表