c# - 统一的 2D 人造重力 (C#)
问题描述
我正在做一个使用 2D 重力的项目。设置是在你发射弹丸的空间中,如果它们离行星足够近,行星的重力会吸引弹丸。射弹在发射时使用对撞机和施加到 Rigidbody2d 的力。
我找到的这张图片很好地解释了它:
我有一些有效的代码,但并不完美。这有点奇怪,似乎某些部分比其他部分更容易吸引弹丸。有时,当我将弹丸射过物体时,它并没有被物体吸引,而是突然飞驰而过。这是代码:
public class Gravity : MonoBehaviour{
public GameObject planet;
public float maxGravity;
public float maxGravityDist;
public Vector3 force;
public Rigidbody2D rb;
void Update(){
float dist = Vector2.Distance(planet.transform.position, transform.position);
Vector3 v = planet.transform.position - transform.position;
force = v.normalized * (1.0f - dist / maxGravityDist) * maxGravity;
rb.AddForce(v.normalized * (1.0f - dist / maxGravityDist) * maxGravity);
}
}
解决方案
推荐阅读
- c# - 使用字符串进行字符串插值
- excel-dna - 尝试从 UDF 写入数组的 Excel DNA 仅写入单个值
- java - 是否可以在Java中实例化没有构造函数的对象
- python - 根据文本输入更改散景中的标签显示
- python - 使用 ConfigParse 编辑带有无名部分的文件
- amazon-web-services - 如何使用 AWS SES 发送多封电子邮件
- javascript - 如何将一个对象分块成更小的对象
- javascript - 带有变量+外部配置的Webpack动态导入不起作用
- sql-server - SQL Servr:间隔日期的 SET 语句
- microservices - 重启 PCF 空间中的所有应用程序