Example #1
0
        private static void TryToApplyForce(float force, Collider collider, ForceType type, float3 origin)
        {
            // if there is no physicsable interface - don't do anything else
            IPhysicsObject pObject = collider.GetComponent <IPhysicsObject>();

            if (pObject == null)
            {
                return;
            }

            switch (type)
            {
            case ForceType.Impulse:
                pObject.AddImpulseForce(force, origin);
                break;

            case ForceType.Force:
                pObject.AddForce(force);
                break;

            case ForceType.Freeze:
                Debug.LogError("Force: Freeze type is not implemented.");
                break;
            }
        }
Example #2
0
        /// <summary>
        /// Generate and apply force to the object
        /// </summary>
        /// <param name="component">Object to apply forces</param>
        /// <param name="secondElapsed">Seconds since last update</param>
        public void UpdateForce(IPhysicsObject component, float secondElapsed)
        {
            Vector3 force = component.Position - other.Position;

            //Calculate magnitude of the force
            float magnitude = force.Length();                      //l

            magnitude = (magnitude - restLength) * springConstant; //|l-l0|

            force.Normalize();
            force *= -magnitude;

            component.AddForce(force);
        }
Example #3
0
        /// <summary>
        /// Generate and apply force to the object
        /// </summary>
        /// <param name="component">Object to apply forces</param>
        /// <param name="secondElapsed">Seconds since last update</param>
        public void UpdateForce(IPhysicsObject component, float secondElapsed)
        {
            Vector3 force = component.Velocity;

            if (force != Vector3.Zero)
            {
                float dragCoeff = force.Length();
                dragCoeff = k1 * dragCoeff + k2 * dragCoeff * dragCoeff;

                force.Normalize();
                force *= -dragCoeff;
                component.AddForce(force);
            }
        }
Example #4
0
 public void ApplyTo(IPhysicsObject obj)
 {
     obj.AddForce(force);
 }
Example #5
0
 /// <summary>
 /// Generate and apply force to the object
 /// </summary>
 /// <param name="component">Object to apply forces</param>
 /// <param name="secondElapsed">Seconds since last update</param>
 public void UpdateForce(IPhysicsObject component, float secondElapsed)
 {
     //if has finite mass
     component.AddForce(gravity * component.Mass);
 }
Example #6
0
 public void AddForce(Force f)
 {
     physicsObject.AddForce(f);
 }