首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在任意位置生成目标,但不被对象阻止

在任意位置生成目标,但不被对象阻止
EN

Stack Overflow用户
提问于 2017-09-24 18:01:52
回答 1查看 238关注 0票数 0

我在FPS中使用此脚本在任意位置(每5秒)生成敌人,但总是在摄像机视图中:

代码语言:javascript
复制
Vector3 screenPosition = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,Screen.width), Random.Range(0,Screen.height), Camera.main.farClipPlane/2));

当然,我的角色站在的地板上,有点挡住了视野。有了上面的代码,敌人就可以在地板下产卵,因为从技术上讲,它在摄像机的视野之内,但是地板会挡住它。

而且,在我的游戏环境中也有房子。有了上面的代码,敌人可以在房子后面产卵,这样角色就看不到他们了。

我在寻找解决这两个问题的方法。如果我可以在我的脚本中添加这样的内容,它们都可以被解决:“敌人必须始终在摄像机视图中产卵,并且不能被其他对象阻止”。

知道我怎么能改变我的脚本来解决这个问题吗?

我在想一种方法来检测一个对象是否被阻塞,如果是的话,让它重生。但恐怕这会影响产卵发生的时间(这应该是5秒,即使它必须重新计算几次,因为敌人被阻止)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-24 18:37:06

雷卡斯特!当你有一个产卵点时,使用Vector3.Distance训练玩家到产卵的距离,一旦你有了从玩家到产卵位置的光线投射。如果射线投射发生碰撞,选择一个新的产卵点,因为一定有什么东西挡住了(因此在视野之外)。

你可以预先计算这几个帧,这样你总是每5秒产生一个新的敌人。您甚至可以通过将代码插入协同线来多线程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46393198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档