【问题标题】:Unity C# raycasting from center of an object to find mesh intersectionUnity C#从物体中心投射光线以找到网格交点
【发布时间】:2013-11-20 10:49:17
【问题描述】:

我正在尝试为一个统一的游戏制作一个重生系统,让角色在他们上一个平台上重新开始。

就目前而言,它会使用 onCollisionEnter 跟踪它们最后基于哪个平台,并检测 onCollisionExit 是否触及越界区域。

我需要用 y 轴在网格上找到一个面的位置(假设最好的方法是从平台中心在全局 y 轴上进行光线投射)并添加角色的高度/2来确定角色的重生位置。

我对unity和c#很陌生,所以我以前从未做过光线投射,我不确定是否可以从物体内部进行光线投射以在给定方向上找到它的网格,或者是否有一种更好/更有效的方法。

提前致谢:)

【问题讨论】:

  • 我不知道统一性,但你能尝试将播放器放在更高的高度直到没有碰撞吗?
  • 如果我使用一个空对象,这实际上可能会起作用,然后在空对象处实例化角色。我试试看。

标签: c# unity3d


【解决方案1】:

"如果可以从对象内部进行光线投射以在给定方向上找到它的网格"

您可以在网格中心放置一个空游戏对象(使其成为网格的子对象),然后将这个空游戏对象的位置传递给光线投射原点。

我通常使用触发器制作重生系统。如果您多解释一下您实际上想要做什么。我会尽力引导你朝那个特定的方向发展。

【讨论】:

  • 我想在最后一个平台的中心重生玩家(碰撞小于 60 度)。因此,如果他们跳投失误,他们不必重新做很多事情。不过,平台不会是平的,所以我需要它来自动确定网格中心在 y 轴上的位置,并在其上方生成角色。
  • 这样做的一种方法是,您必须在要为每个平台重生角色的位置创建一个空游戏对象。并将其引用传递给平台脚本文件(您已经在其中重新生成角色的脚本)。所以当你重生你的角色时,从它的参考中获取空游戏对象的位置并相应地放置你的角色。
  • 其实我已经有的系统把这个角色最后一次走在哪个平台上存储在一个变量中。问题不是重生角色(我只是要直接更改玩家的变换),问题是在特定轴(y)上找到网格相对于平台中心的位置。
  • 基本上我要解决的问题是在哪里放置空的,或者在哪里重生角色。我需要某种方法来找到平台网格在 y 轴上相对于平台中心的位置。所以平台的中心给了我空间中一个点的 x、y 和 z 坐标,然后从那个点我在 Y 上向上移动,直到我不再在网格内。我增加了这个价值,我的角色的高度。然后我将拥有 x、y 和 z 坐标,我可以使用它们轻松地重生我的角色。我只是不知道如何找到平台网格的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多