【问题标题】:Hugging 2D object and moving around it拥抱 2D 对象并在其周围移动
【发布时间】:2016-04-11 16:44:20
【问题描述】:

我有一个动态生成为任何形状的对象。它是使用LineRenderer 构建的,并附有EdgeCollider。当某个物体接触到这个物体时,我希望它“拥抱”它并在它周围移动。

如果对象是黑线,我希望我的对象跟随绿线并围绕对象做一个完整的圆圈。

我已经阅读了一些关于 RayCasting 和 3D 世界中的东西的信息,但是我对 Unity 还很陌生,我不确定如何在 2D 中做到这一点。

您的任何建议将不胜感激,但一个工作示例将不胜感激 1000 倍! ;)

提前致谢!

【问题讨论】:

  • 很难做到这一点。真的,我不会打扰。
  • 你是建议我以其他方式去做,还是完全放弃我的想法?我不确定说“放弃”是任何优秀的 SO 用户都应该做的事情......:-/

标签: c# unity3d 2d collision unity5


【解决方案1】:

请注意,大多数 3D 方法都有 2D 等效项。 Physics2D.Raycast,而不是 Physics.Raycast 例如。在 Unity 中从 3D 移动到 2D 时很容易遇到这种情况。

作为一名合同编码员,我愿意为您构建类似的东西。作为 stackoverflow 用户,我将为您提供一个大纲,您可以按照自己的方式进行操作。 :)

碰撞后,每帧开始这样做:

  1. 旋转您的对象以面对线条。
  2. 按照您希望的方向移动您的对象。
  3. 沿线的方向向对象添加力,以保持它 固定在它上面。

您可以使用LookAtTranslateRigidbody2D.AddForce 来完成此操作。

希望对您有所帮助,祝您编码愉快!

【讨论】:

  • 嘿,谢谢你的信息,我很确定你的建议我已经完成了 80% 的工作。在短短 20 分钟内,我已经能够使用 Physics2D.Raycast 函数让我的对象沿着对撞机移动。使用 Velocity,我的对象由于某种原因似乎在扁平区域上加速。我已将其设置为IsKinematic,因此不应受到任何力量的影响...再次感谢您的帮助,您知道为什么在使用时扁平区域会导致加速:Velocity = new Vector2(_10 * Time.deltaTime, 0) - 仅沿十。
  • 尝试使用物理材料消除摩擦和弹性。如果不是这样,则可能需要发布代码的新问题。
  • 我看不到私下联系你的方式,如果你有兴趣,我可能会雇用你作为承包商来帮助我进行各种开发,因为我学习 Unity :)
  • 感谢您提请我注意!我不知道我没有公开添加我的联系信息。您可以通过我的website与我联系
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 2014-11-28
  • 1970-01-01
相关资源
最近更新 更多