我在FPS中使用此脚本在任意位置(每5秒)生成敌人,但总是在摄像机视图中:
Vector3 screenPosition = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,Screen.width), Random.Range(0,Screen.height), Camera.main.farClipPlane/2));当然,我的角色站在的地板上,有点挡住了视野。有了上面的代码,敌人就可以在地板下产卵,因为从技术上讲,它在摄像机的视野之内,但是地板会挡住它。
而且,在我的游戏环境中也有房子。有了上面的代码,敌人可以在房子后面产卵,这样角色就看不到他们了。
我在寻找解决这两个问题的方法。如果我可以在我的脚本中添加这样的内容,它们都可以被解决:“敌人必须始终在摄像机视图中产卵,并且不能被其他对象阻止”。
知道我怎么能改变我的脚本来解决这个问题吗?
我在想一种方法来检测一个对象是否被阻塞,如果是的话,让它重生。但恐怕这会影响产卵发生的时间(这应该是5秒,即使它必须重新计算几次,因为敌人被阻止)。
发布于 2017-09-24 18:37:06
雷卡斯特!当你有一个产卵点时,使用Vector3.Distance训练玩家到产卵的距离,一旦你有了从玩家到产卵位置的光线投射。如果射线投射发生碰撞,选择一个新的产卵点,因为一定有什么东西挡住了(因此在视野之外)。
你可以预先计算这几个帧,这样你总是每5秒产生一个新的敌人。您甚至可以通过将代码插入协同线来多线程。
https://stackoverflow.com/questions/46393198
复制相似问题