我在制作游戏时会使用具有自身引力的对象。我正在使用Vector2.Distance方法。当物体开始彼此靠近时,距离变小,但是当物体变为2时,距离又开始变大。
foreach (Rigidbody2D body in allRigidBodies)
{
if (body.gameObject.layer == 8 && body.name != ThisBodyName)
{
AvrgPosition2D += body.position;
AvrgMass += body.mass;
count++;
}
}
AvrgPosition2D = AvrgPosition2D / count;
AvrgPosition3D = AvrgPosition2D;
distance = Vector2.Distance(AvrgPosition3D, ThisBodyRB.position);
force = GravConstant * AvrgMass * ThisBodyMass / (distance * distance);
ThisBodyRB.AddForce(AvrgPosition3D * (float)force * Time.deltaTime);
AvrgMass = 0;
AvrgPosition2D -= AvrgPosition2D;
count = 0;
我也尝试过(AvrgPosition-ThisBodyRB.position).magnitude,但这并没有改变任何东西。
此外,我在2个对象上都有此脚本,但它们不会输出相同的距离。
答案 0 :(得分:2)
您的行:
plot(-40:40/10, dnorm(-40:40/10), type = "l")
for (i in -4:4){
if (i != 0){
segments(i,0,i,dnorm(i))
}
}
可能是问题所在。您要比较的位置是有关尸体的位置以及所有尸体的平均位置-有关尸体的位置。
据我所知,这条线根本没有必要,因为在获取平均位置时您根本不会考虑当前物体的位置。