【问题标题】:Unity - Help needed with spherical gravity?Unity - 球形重力需要帮助吗?
【发布时间】:2017-07-21 01:27:59
【问题描述】:

我正在开发一款基于球形重力的游戏。但不知何故,我的代码没有按预期工作。所以请看看我的代码,告诉我如何让我的球形重力起作用。

public class CircularGravity : MonoBehaviour {
    private Rigidbody2D rigid;
    [SerializeField]
    Transform planet;

    [SerializeField]
    float acceleration = 0.81f;
    // Use this for initialization
    void Start () {
        rigid = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update () {
        rigid.AddForce((planet.position - transform.position).normalized * acceleration);
        transform.rotation = Quaternion.LookRotation(planet.position - transform.position, transform.up);
    }
}

问题阐述。项目是二维的。它包含一个圆形精灵作为带有碰撞器的行星,六边形有一个带有碰撞器和刚体的玩家(只是一个原型)。此脚本附加到播放器(六边形)。根据我的逻辑刚体应该对玩家施加一个力并将其推向行星,它应该面向行星。因此,即使玩家在圆圈的下方,它也不应该下落,而是应该被推向行星。但是所有的对撞机都被忽略了,玩家只是要去一个奇怪的位置

【问题讨论】:

  • 感谢您向您的问题添加代码,但什么不起作用?什么是球面重力?
  • @Programmer well 也就是游戏超级马里奥星系中的人造重力。一旦谷歌
  • @programmer 我的玩家本应停留在地球周围,但它正在向行星中心移动
  • @SamratLuitel 嗯,这就是引力点,将你拉到地球的中心。您的对撞机可能有问题。
  • @SamratLuitel 你确定它们在同一个轴上并且它们实际上正在碰撞吗?

标签: c# unity3d


【解决方案1】:

我要检查的第一件事...

  • 确保精灵的原点实际上位于图像的中心。如果它在角落里,玩家将被拉向角落。

  • 确保行星和玩家都有刚体和碰撞体。单击对撞机并确保边缘与您的形状对齐。

  • 确保行星和玩家的 z 值都设置为零。在两个刚体中锁定 z。

【讨论】:

  • 还要确保在刚体上关闭重力(不确定这是否与 2D 相关)。
猜你喜欢
  • 1970-01-01
  • 2015-10-02
  • 2018-05-04
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 2016-02-11
相关资源
最近更新 更多