首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自游戏对象的多个光线投射

来自游戏对象的多个光线投射
EN

Stack Overflow用户
提问于 2018-05-15 09:19:00
回答 2查看 4.3K关注 0票数 0

我得到了一个小场景,与障碍和类似的人工智能发射出一个射线广播,以检测是否有墙的正面,然后它决定旋转,如果发生这样的事情。我现在正在尝试获得多个光线投射,以便它可以检查相同的,但与+45和- 45的视角,否则机器人只能检查它的前射线。我该怎么做?下面的代码示例。

代码语言:javascript
运行
复制
ray = new Ray(transform.position + Vector3.up, transform.forward);
     RaycastHit hit;
     if (Physics.Raycast(ray, out hit, 55f))
     {
         if (hit.collider.tag == ("Pick Up"))
         {
             Debug.DrawLine(ray.origin, hit.point, Color.red);
             transform.position = Vector3.MoveTowards(transform.position, hit.point, Time.deltaTime * speed);
         }
         else
         {
             Debug.DrawLine(ray.origin, hit.point, Color.blue);
             transform.Rotate(0, -80 * Time.deltaTime, 0);
         }
     }
     else
     {
         transform.position += transform.forward * speed * Time.deltaTime;
         Debug.DrawLine(ray.origin, hit.point, Color.white);
     }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-15 18:12:59

制造许多射线并不是解决这个问题的有效方法。您可以使用Physics.SphereCast。你会投出它,就像你在光线投射中所做的那样,给它一个半径来填充45到-45的视角。

你可以这样计算出两个角度之间的距离;

创建2个更多的射线投射,1个为45,1个为-45。你将取他们的归一化向量。

代码语言:javascript
运行
复制
Vector3 distance = Vector3.Distance(Raycast45.normalized, Raycast-45.normalized);

希望能帮上忙..。

票数 1
EN

Stack Overflow用户

发布于 2018-05-15 10:54:45

您应该能够创建多个光线投射(只需创建一个新的射线)。

为了获得你想要的学位,你可以在选择射线方向时使用这样的方法:

代码语言:javascript
运行
复制
(transform.forward + transform.right).normalized
(transform.forward - transform.right).normalized
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50346503

复制
相关文章

相似问题

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