public void UpdateGravity(IGravityObject gravityObject) { var gravityObjToPlanet = (transform.position - gravityObject.CurrentPosition); // 중력 영향 범위 내에 gravityObject가 있다면 if (gravityObjToPlanet.IsInDistance(GravityRange)) { } }
private Vector CalcGravityForce(IGravityObject gravityObject) { Vector targetGravityForce = new Vector(0, 0); foreach (ISpaceObject so in SpaceObjects) { if (so is IGravityObject go) { if (gravityObject == go) { continue; } Vector gravityForce = go.Position - gravityObject.Position; if (gravityForce.GetSize() != 0) { gravityForce = new Vector((double)(G * (gravityObject.GetWeight() * go.GetWeight()) / Math.Pow(gravityForce.GetSize(), 2)), gravityForce.GetAngle()); targetGravityForce += gravityForce; } } } return(targetGravityForce); }
public void RemoveObject(IGravityObject gravityObject) { _gravityObjects.Remove(gravityObject); }
public void AddObject(IGravityObject gravityObject) { _gravityObjects.Add(gravityObject); }