我正在开发一款基于球形重力的游戏。但不知何故,我的代码没有按预期工作。所以,请看看我的代码并告诉我如何使我的球形重力工作。
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);
}
}
问题阐述。项目是2d。它包含一个圆形精灵作为一个带有对撞机和六角形的行星,它有一个带有对撞机和刚体的玩家(只是一个原型)。此脚本附加到播放器(六角形)。根据我的逻辑,刚体应该向玩家施加一个力并将其推向行星并且应该面向行星。因此,即使玩家位于圆圈的下方,它也不会倒下而是被推向行星。但是所有的对手都被忽视了,而玩家只是走向了奇怪的位置
答案 0 :(得分:2)
我要检查的第一件事......
确保精灵的原点实际上位于图像的中心。如果它在角落里,玩家将被拉向角落。
确保行星和玩家都有刚体和碰撞器。单击对撞机并确保边缘与您的形状对齐。
确保行星和玩家的z都设置为零。在两个刚体中锁定z。