示例#1
0
    public void shoot(Vector2 direction, GameObject shooter)
    {
        this.shooter = shooter;
        PhisicalObject po = gameObject.GetComponent <PhisicalObject> ();

        po.AddForce(direction * force);
    }
示例#2
0
        static public void JetRotatEngineOperation(PhisicalObject o, double timeInSecond)
        {
            RocketBody rocket = (RocketBody)o;

            rocket.AddMomentOfImpulse(
                rocket.dMomentumPerSecond * (int)rocket.rotationEngine
                );
        }
        public static void SetPhDelegateValue(PhisicalObject o)
        {
            o.InteractionWithAll = null;
            o.ActionAlways       = null;

            o.InteractToCondit = new List <KeyValuePair <InteractCondition, Interaction> >();
            o.ActToCondit      = new List <KeyValuePair <ActCondition, Action> >();
        }
示例#4
0
        static public void JetTransEngineOperation(PhisicalObject o, double timeInSecond)
        {
            RocketBody rocket = (RocketBody)o;

            Coord dp = Coord.FromPolar(
                rocket.dImpulsPerSecond * (int)rocket.translationEngine,
                rocket.angle
                );

            rocket.AddImpulse(dp);
        }
示例#5
0
        public static Coord CosmicSpeeds(PhisicalObject m1, PhisicalObject m2, int number)
        {
            double V = Math.Sqrt(
                Math.Abs(number) *
                GravityConst * m2.mass /
                (m2.coord - m1.coord).polarR
                );


            Coord Speed = Coord.FromPolar(
                V * number / Math.Abs(number),
                (m2.coord - m1.coord).polarAngle - Math.PI / 2
                );

            return(Speed + m2.speed);
        }
示例#6
0
    void FixedUpdate()
    {
        RaycastHit hit = new RaycastHit();

        if (Physics.Linecast(transform.position, transform.position + ((trajectory * -1) * drag * timeScale) + (gravity * timeScale) + (trajectory * timeScale), out hit))
        {
            PhisicalObject obj = hit.collider.GetComponent <PhisicalObject>();
            if ((!obj || obj.collision) && !noClip)
            {
                trajectory         = trajectory - 2 * Vector3.Dot(trajectory, hit.normal) * (hit.normal);
                transform.position = hit.point;
                hit.collider.GetComponent <PhisicalObject>();
            }
        }

        AddForce((trajectory * -1) * drag * timeScale);
        transform.position += gravity * timeScale;
        transform.position += trajectory * timeScale;
    }
示例#7
0
 public static Coord NewtonForce(PhisicalObject m1, PhisicalObject m2)
 {
     return(GravityConst * m1.mass * m2.mass /
            Math.Pow((m2.coord - m1.coord).polarR, 3)
            * (m2.coord - m1.coord));
 }
示例#8
0
 public static void GravitationalInteraction(PhisicalObject m1, PhisicalObject m2, double timeInSec)
 {
     m1.ActForce(Gravitation.NewtonForce(m1, m2), timeInSec);
 }
        public PhisicalModel Add(PhisicalObject o)
        {
            pObjects.Add(o);

            return(this);
        }