Ejemplo n.º 1
0
 public override void OnReset()
 {
     if (force != null) {
         force.Value = Vector3.zero;
     }
     forceMode = ForceMode.Force;
 }
Ejemplo n.º 2
0
 public override void Reset()
 {
     center = null;
     upwardsModifier = 0f;
     forceMode = ForceMode.Force;
     everyFrame = false;
 }
Ejemplo n.º 3
0
 public override void OnReset()
 {
     targetGameObject = null;
     force = Vector3.zero;
     position = Vector3.zero;
     forceMode = ForceMode.Force;
 }
    /// <summary>
    /// Function for applying a specific type of force to a Rigidbody2D (since the default functionality is incomplete)
    /// </summary>
    /// <param name="rb2d">Rigidbody2D to apply the force to</param>
    /// <param name="force">The amount of force to apply</param>
    /// <param name="mode">What type of force to apply</param>
    /// <param name="relativeTo">Should the force be applied in the rigidbody's local space, or world space?</param>
    public static void AddForce2D(this Rigidbody2D rb2d, Vector2 force, ForceMode mode = ForceMode.Force, Space relativeTo = Space.World)
    {
        ForceMode2D mode2D = ForceMode2D.Force;
        Vector2 forceApplied = force;
        switch (mode)
        {
            case ForceMode.Impulse:
                mode2D = ForceMode2D.Impulse;
                break;
            case ForceMode.Acceleration:
                forceApplied *= rb2d.mass;
                break;
            case ForceMode.VelocityChange:
                forceApplied = force * rb2d.mass / Time.fixedDeltaTime;
                break;
            case ForceMode.Force:
                //nothing special
                break;
        }

        if (relativeTo == Space.Self)
            rb2d.AddRelativeForce(forceApplied, mode2D);
        else if (relativeTo == Space.World)
            rb2d.AddForce(forceApplied, mode2D);
    }
Ejemplo n.º 5
0
    public Vector2 ApplyForceMode(Vector2 force, ForceMode forceMode)
    {
        switch (forceMode)

        {

        case ForceMode.Force:

            return force;

        case ForceMode.Impulse:

            return force / Time.fixedDeltaTime;

        case ForceMode.Acceleration:

            return force * rigidbody2D.mass;

        case ForceMode.VelocityChange:

            return force * rigidbody2D.mass / Time.fixedDeltaTime;

        default:
            return force;

        }
    }
 /// <summary>
 ///     Draws a <seealso cref="Rigidbody" />'s trajectory using <seealso cref="Debug" />.DrawLine.
 /// </summary>
 /// <param name="rb"> The body whose trajectory is being drawn. </param>
 /// <param name="force"> For predicting the effects of a Rigidbody.AddForce() method. Use Vector3.zero if not needed. </param>
 /// <param name="mode"> Determines how the force vector changes the velocity. Irrelevant when using Vector3.zero. </param>
 /// <param name="color"> The color of the line being drawn. </param>
 /// <param name="trajectoryDuration"> Amount of time in seconds to predict. </param>
 /// <param name="lineDuration"> Amount of time in seconds the drawn line will persist. </param>
 /// <param name="constantForce"> Will the force be applied every FixedUpdate. </param>
 /// <param name='depthTest'> Whether or not the line should be faded when behind other objects. </param>
 public static void DebugTrajectory(this Rigidbody rb, Vector3 force, ForceMode mode, Color color,
     float trajectoryDuration = 1.0f, float lineDuration = 0.0f, bool constantForce = false, bool depthTest = false)
 {
     var positions = rb.GetTrajectory(force, mode, trajectoryDuration, constantForce);
     for (var i = 0; i < positions.Length - 1; i++)
         Debug.DrawLine(positions[i], positions[i + 1], color, lineDuration, depthTest);
 }
Ejemplo n.º 7
0
 public override void Reset()
 {
     this.center = null;
     this.upwardsModifier = 0f;
     this.forceMode = ForceMode.Force;
     this.everyFrame = false;
 }
 public override void Reset()
 {
     gameObject = null;
     center = new FsmVector3 { UseVariable = true };
     upwardsModifier = 0f;
     forceMode = ForceMode.Force;
     everyFrame = false;
 }
Ejemplo n.º 9
0
 public override void OnReset()
 {
     targetGameObject = null;
     if (force != null) {
         force.Value = Vector3.zero;
     }
     forceMode = ForceMode.Force;
 }
Ejemplo n.º 10
0
 public Damage(MonoBehaviour pAttacker, DamageType pDamageType, int pDamage, Vector3 pMomentum, ForceMode pMomentumType)
 {
     attacker = pAttacker;
     damageType = pDamageType;
     damage = pDamage;
     momentum = pMomentum;
     momentumType = pMomentumType;
 }
Ejemplo n.º 11
0
 private void metjolturgent(float varpforcemin, float varpforcemax, float varptorquemin, float varptorquemax, ForceMode varpforcemode, bool varpjoltspine, bool varpjolthead, bool varpjoltarmleft, bool varpjoltarmright, bool varpjoltlegright, bool varpjoltlegleft)
 {
     clsurgent componentInChildren = base.gameObject.GetComponentInChildren<clsurgent>();
     if (componentInChildren == null)
     {
         return;
     }
     Vector3 force = new Vector3(UnityEngine.Random.Range(varpforcemin, varpforcemax), UnityEngine.Random.Range(varpforcemin, varpforcemax), UnityEngine.Random.Range(varpforcemin, varpforcemax));
     Vector3 torque = new Vector3(UnityEngine.Random.Range(varptorquemin, varptorquemax), UnityEngine.Random.Range(varptorquemin, varptorquemax), UnityEngine.Random.Range(varptorquemin, varptorquemax));
     if (varpjoltspine)
     {
         for (int i = 0; i < componentInChildren.vargamnodes.vargamspine.Length; i++)
         {
             componentInChildren.vargamnodes.vargamspine[i].GetComponent<Rigidbody>().AddForce(force, varpforcemode);
             componentInChildren.vargamnodes.vargamspine[i].GetComponent<Rigidbody>().AddTorque(torque, varpforcemode);
         }
     }
     if (varpjolthead)
     {
         for (int j = 0; j < componentInChildren.vargamnodes.vargamhead.Length; j++)
         {
             componentInChildren.vargamnodes.vargamhead[j].GetComponent<Rigidbody>().AddForce(force, varpforcemode);
             componentInChildren.vargamnodes.vargamhead[j].GetComponent<Rigidbody>().AddTorque(torque, varpforcemode);
         }
     }
     if (varpjoltarmleft)
     {
         for (int k = 0; k < componentInChildren.vargamnodes.vargamarmleft.Length; k++)
         {
             componentInChildren.vargamnodes.vargamarmleft[k].GetComponent<Rigidbody>().AddForce(force, varpforcemode);
             componentInChildren.vargamnodes.vargamarmleft[k].GetComponent<Rigidbody>().AddTorque(torque, varpforcemode);
         }
     }
     if (varpjoltarmright)
     {
         for (int l = 0; l < componentInChildren.vargamnodes.vargamarmright.Length; l++)
         {
             componentInChildren.vargamnodes.vargamarmright[l].GetComponent<Rigidbody>().AddForce(force, varpforcemode);
             componentInChildren.vargamnodes.vargamarmright[l].GetComponent<Rigidbody>().AddTorque(torque, varpforcemode);
         }
     }
     if (varpjoltlegleft)
     {
         for (int m = 0; m < componentInChildren.vargamnodes.vargamlegleft.Length; m++)
         {
             componentInChildren.vargamnodes.vargamlegleft[m].GetComponent<Rigidbody>().AddForce(force, varpforcemode);
             componentInChildren.vargamnodes.vargamlegleft[m].GetComponent<Rigidbody>().AddTorque(torque, varpforcemode);
         }
     }
     if (varpjoltlegright)
     {
         for (int n = 0; n < componentInChildren.vargamnodes.vargamlegright.Length; n++)
         {
             componentInChildren.vargamnodes.vargamlegright[n].GetComponent<Rigidbody>().AddForce(force, varpforcemode);
             componentInChildren.vargamnodes.vargamlegright[n].GetComponent<Rigidbody>().AddTorque(torque, varpforcemode);
         }
     }
 }
Ejemplo n.º 12
0
 public override void Reset () {
     explosionPoint = new ConcreteVector3Var();
     explosionPosition = new ConcreteGameObjectVar(this.self);
     explosionForce = new ConcreteFloatVar();
     explosionRadius = new ConcreteFloatVar();
     upwardsModifier = new ConcreteFloatVar();
     mode = ForceMode.Force;
     layers = -1;
 }
Ejemplo n.º 13
0
 public override void OnReset()
 {
     targetGameObject = null;
     explosionForce = 0;
     explosionPosition = Vector3.zero;
     explosionRadius = 0;
     upwardsModifier = 0;
     forceMode = ForceMode.Force;
 }
Ejemplo n.º 14
0
 public override void Reset () {
     gameObject = new ConcreteGameObjectVar(this.self);
     space = Space.World;
     torque = new ConcreteVector3Var();
     torqueX = new ConcreteFloatVar();
     torqueY = new ConcreteFloatVar();
     torqueZ = new ConcreteFloatVar();
     multiplyTorqueBy = new ConcreteFloatVar();
     mode = ForceMode.Force;
     perSecond = true;
 }
Ejemplo n.º 15
0
 public override void Reset()
 {
     gameObject = null;
     // default axis to variable dropdown with None selected.
     x = new FsmFloat { UseVariable = true };
     y = new FsmFloat { UseVariable = true };
     z = new FsmFloat { UseVariable = true };
     space = Space.World;
     forceMode = ForceMode.Force;
     everyFrame = false;
 }
Ejemplo n.º 16
0
 public void ForceToPoint(Vector3 point, float maxForce, float maxDistance, bool inverseDirection, ForceMode mode)
 {
     Vector3 myPosition = myTransform.position;
     float distance = Vector3.Distance(myPosition, point);
     if (distance <= maxDistance) {
         Vector3 direction = (point - myPosition);
         if (inverseDirection) {
             direction *= -1;
         }
         myRigidbody.AddForce(direction.normalized * (1f - distance / maxDistance) * maxForce, mode);
     }
 }
 public override void OnReset()
 {
     if (explosionForce != null) {
         explosionForce.Value = 0;
     }
     if (explosionPosition != null) {
         explosionPosition.Value = Vector3.zero;
     }
     if (explosionRadius != null) {
         explosionRadius.Value = 0;
     }
     upwardsModifier = 0;
     forceMode = ForceMode.Force;
 }
 public static void AddExplosionForce ( 
     this Rigidbody body
     , float explosionForce
     , Vector3 explosionRadiusCenter
     , float explosionRadius
     , Vector3 explosionOriginPoint // this is the oposite from upwardsModifier
     , ForceMode mode
 )
 {
     if (Vector3.Distance(body.transform.position, explosionRadiusCenter) <= explosionRadius) 
     {
         Vector3 force = (body.transform.position - (explosionRadiusCenter + explosionOriginPoint));
         body.AddForce(force * (explosionForce/5), mode); // 5 came from experimentation
     }
 }
	public static void AddForce (this Rigidbody2D rigidbody2D, Vector2 force, ForceMode mode = ForceMode.Force) {

		switch(mode){
		case ForceMode.Force:
			rigidbody2D.AddForce (force);
			break;
		case ForceMode.Impulse:
			rigidbody2D.AddForce (force / Time.fixedDeltaTime);
			break;
		case ForceMode.Acceleration:
			rigidbody2D.AddForce (force * rigidbody2D.mass);
			break;
		case ForceMode.VelocityChange:
			rigidbody2D.AddForce (force * rigidbody2D.mass / Time.fixedDeltaTime);
			break;
		}
	}
Ejemplo n.º 20
0
 // Recieve damage methods
 #region Recieve Damage methods and overloads
 public virtual void RecieveDamage(GameObject source, int Amount, float KnockbackForce, ForceMode m)
 {
     if (CharacterHealth > 0)
     {
         this.CharacterHealth -= Amount;
         Vector3 relativeDirection = this.transform.position - source.transform.position;
         relativeDirection = relativeDirection.normalized;
         relativeDirection *= KnockbackForce;
         this.transform.rigidbody.AddForce(relativeDirection, m);
         // Visual effect
         if (GetHitEffect)
         {
             Instantiate(GetHitEffect, gotHitPoint, transform.rotation);
         }
         // Sound effect
         DamageTaken(source);
     }
 }
 public void Launch(float speed, ForceMode mode)
 {
     Speed = speed;
     _mode = mode;
     enabled = true;
     gameObject.SetActive(true);
     var r = rigidbody;
     r.velocity = Vector3.zero;
     r.angularVelocity = Vector3.zero;
     //r.inertiaTensorRotation = Quaternion.identity;
     //r.rotation = Quaternion.identity;
     r.inertiaTensor = new Vector3(1,1,1);
     r.isKinematic = true;
     r.isKinematic = false;
     renderer.enabled = true;
     if (LaunchSound)
     {
         audio.PlayOneShot(LaunchSound);
     }
     if (thruster)
     {
         thruster.Play(true);
     }
 }
Ejemplo n.º 22
0
        public void AddForceAtPosition(Vector3 force, Vector3 position)
        {
            ForceMode mode = ForceMode.Force;

            Rigidbody.INTERNAL_CALL_AddForceAtPosition(this, ref force, ref position, mode);
        }
Ejemplo n.º 23
0
 /// <summary>
 ///   <para>Applies a force to a rigidbody that simulates explosion effects.</para>
 /// </summary>
 /// <param name="explosionForce">The force of the explosion (which may be modified by distance).</param>
 /// <param name="explosionPosition">The centre of the sphere within which the explosion has its effect.</param>
 /// <param name="explosionRadius">The radius of the sphere within which the explosion has its effect.</param>
 /// <param name="upwardsModifier">Adjustment to the apparent position of the explosion to make it seem to lift objects.</param>
 /// <param name="mode">The method used to apply the force to its targets.</param>
 public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, [DefaultValue("0.0F")] float upwardsModifier, [DefaultValue("ForceMode.Force")] ForceMode mode)
 {
     Rigidbody.INTERNAL_CALL_AddExplosionForce(this, explosionForce, ref explosionPosition, explosionRadius, upwardsModifier, mode);
 }
Ejemplo n.º 24
0
 private static extern void INTERNAL_CALL_AddRelativeTorque(Rigidbody self, ref Vector3 torque, ForceMode mode);
Ejemplo n.º 25
0
 /// <summary>
 ///   <para>Adds a torque to the rigidbody relative to its coordinate system.</para>
 /// </summary>
 /// <param name="x">Size of torque along the local x-axis.</param>
 /// <param name="y">Size of torque along the local y-axis.</param>
 /// <param name="z">Size of torque along the local z-axis.</param>
 /// <param name="mode"></param>
 public void AddRelativeTorque(float x, float y, float z, [DefaultValue("ForceMode.Force")] ForceMode mode)
 {
     this.AddRelativeTorque(new Vector3(x, y, z), mode);
 }
Ejemplo n.º 26
0
 private static extern void INTERNAL_CALL_AddForceAtPosition(Rigidbody self, ref Vector3 force, ref Vector3 position, ForceMode mode);
Ejemplo n.º 27
0
 /// <summary>
 ///   <para>Adds a torque to the rigidbody relative to its coordinate system.</para>
 /// </summary>
 /// <param name="torque">Torque vector in local coordinates.</param>
 /// <param name="mode"></param>
 public void AddRelativeTorque(Vector3 torque, [DefaultValue("ForceMode.Force")] ForceMode mode)
 {
     Rigidbody.INTERNAL_CALL_AddRelativeTorque(this, ref torque, mode);
 }
Ejemplo n.º 28
0
        public void AddRelativeTorque(Vector3 torque)
        {
            ForceMode force = ForceMode.Force;

            INTERNAL_CALL_AddRelativeTorque(this, ref torque, force);
        }
Ejemplo n.º 29
0
 public virtual void ApplyForce(Vector3 power, ForceMode mode)
 {
 }
Ejemplo n.º 30
0
 public void AddRelativeForce(Vector3 force, [DefaultValue("ForceMode.Force")] ForceMode mode)
 {
     INTERNAL_CALL_AddRelativeForce(this, ref force, mode);
 }
Ejemplo n.º 31
0
        public void AddRelativeForce(float x, float y, float z)
        {
            ForceMode force = ForceMode.Force;

            this.AddRelativeForce(x, y, z, force);
        }
Ejemplo n.º 32
0
 public void AddForce(Vector3 elasticityForce, ForceMode mode)
 {
     Vector2 ef = VectorConverter.Convert(elasticityForce, body.UserData.to2dMode);
     switch (mode)
     {
         case ForceMode.Force:
             body.ApplyForce(ef, VectorConverter.Convert(gameObject.transform.position, body.UserData.to2dMode));
             break;
         case ForceMode.Acceleration:
             throw new NotImplementedException();
         case ForceMode.Impulse:
             body.ApplyLinearImpulse(ef, VectorConverter.Convert(gameObject.transform.position, body.UserData.to2dMode));
             break;
         case ForceMode.VelocityChange:
             throw new NotImplementedException();
     }
 }
Ejemplo n.º 33
0
 private static extern void INTERNAL_CALL_AddTorque(Rigidbody self, ref Vector3 torque, ForceMode mode);
Ejemplo n.º 34
0
 private static extern void INTERNAL_CALL_AddRelativeForce(Rigidbody self, ref Vector3 force, ForceMode mode);
Ejemplo n.º 35
0
 private static extern void INTERNAL_CALL_AddExplosionForce(Rigidbody self, float explosionForce, ref Vector3 explosionPosition, float explosionRadius, float upwardsModifier, ForceMode mode);
Ejemplo n.º 36
0
 public void Move(Vector3 moveDirection, float speed, ForceMode forceMode)
 {
     thisRigidBody.AddForce(moveDirection * speed, forceMode);
 }
Ejemplo n.º 37
0
 public void GetStunned(float force, Vector3 Vector, ForceMode forceMode)
 {
     rb.AddForce(force * Vector, forceMode);
     StartCoroutine(StunCo());
 }
Ejemplo n.º 38
0
 // Damage targets
 /// <summary>
 /// Damage targets, returns the Character it hit
 /// </summary>
 /// <returns>GameObject</returns>
 public GameObject MeleeDamage(GameObject source, int Amount, float KnockbackForce, ForceMode m)
 {
     RaycastHit mRay;
     LayerMask layer = (1 << LayerMask.NameToLayer("NPC")) | (1 << LayerMask.NameToLayer("Player")); // Player and NPC layer.
     if (Physics.Raycast(transform.position + transform.TransformDirection(DamagePointOffset), transform.TransformDirection(Vector3.forward), out mRay, HitDistance, layer))
     {
         damageDebugGizmo = mRay.point;
         Character _char = (Character)mRay.collider.gameObject.GetComponent(typeof(Character));
         if (_char)
         {
             Debug.Log(_char.gameObject.name);
             _char.SetHitPoint = mRay.point;
             _char.RecieveDamage(source, Amount, KnockbackForce, m);
             return mRay.collider.gameObject;
         }
         else
             return null;
     }
     return null;
 }
 public void AddForceAtPosition(Vector3 force, Vector3 position, ForceMode mode)
 {
     _body.AddForceAtPosition(force, position, mode);
 }
 public ConfigurableForce(float strength, ForceMode mode, ForceDirection dir)
 {
     _direction = dir;
     _strength = strength;
     _forceMode = mode;
 }
Ejemplo n.º 41
0
        public void AddRelativeForce(Vector3 force)
        {
            ForceMode mode = ForceMode.Force;

            Rigidbody.INTERNAL_CALL_AddRelativeForce(this, ref force, mode);
        }
 public void AddRelativeForce(Vector3 velocity, ForceMode forceMode = ForceMode.Force)
 {
     AddForce(transform.TransformDirection(velocity), forceMode);
 }
Ejemplo n.º 43
0
        public void AddRelativeTorque(Vector3 torque)
        {
            ForceMode mode = ForceMode.Force;

            Rigidbody.INTERNAL_CALL_AddRelativeTorque(this, ref torque, mode);
        }
        public void AddExplosionForce(float force, Vector3 position, float explosionRadius, ForceMode forceMode = ForceMode.Force)
        {
            float distance = Vector3.Distance(position, transform.position);

            if (distance < explosionRadius)
            {
                AddForce(ExtVector3.Direction(position, transform.position) * (force * (distance / explosionRadius)), forceMode);
            }
        }
Ejemplo n.º 45
0
        public void AddRelativeTorque(float x, float y, float z)
        {
            ForceMode mode = ForceMode.Force;

            this.AddRelativeTorque(x, y, z, mode);
        }
Ejemplo n.º 46
0
 public void TakeShot(Vector3 shootDirection, float shootSpeed, ForceMode forceMode)
 {
     thisRigidBody.isKinematic = false;
     thisRigidBody.AddForce(shootDirection.normalized * shootSpeed, ForceMode.Impulse);
 }
Ejemplo n.º 47
0
 /// <summary>
 ///   <para>Applies force at position. As a result this will apply a torque and force on the object.</para>
 /// </summary>
 /// <param name="force">Force vector in world coordinates.</param>
 /// <param name="position">Position in world coordinates.</param>
 /// <param name="mode"></param>
 public void AddForceAtPosition(Vector3 force, Vector3 position, [DefaultValue("ForceMode.Force")] ForceMode mode)
 {
     Rigidbody.INTERNAL_CALL_AddForceAtPosition(this, ref force, ref position, mode);
 }
Ejemplo n.º 48
0
 public void AddTorque(Vector3 torque, ForceMode mode)
 {
     this.body.AddTorque(torque, mode);
 }
Ejemplo n.º 49
0
 private static extern void INTERNAL_CALL_AddForceAtPosition(Rigidbody self, ref Vector3 force, ref Vector3 position, ForceMode mode);
 public void AddForceAtPosition(Vector3 force, Vector3 pos, ForceMode mode)
 {
     updateContainer();
     parentRigid.AddForceAtPosition(force, pos, mode);
 }
Ejemplo n.º 51
0
        public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, float upwardsModifier)
        {
            ForceMode mode = ForceMode.Force;

            Rigidbody.INTERNAL_CALL_AddExplosionForce(this, explosionForce, ref explosionPosition, explosionRadius, upwardsModifier, mode);
        }
Ejemplo n.º 52
0
 public void SetForce(Vector3 newforce, ForceMode newforceMode)
 {
     rb = GetComponent <Rigidbody>();
     rb.AddForce(newforce, newforceMode);
 }
Ejemplo n.º 53
0
 public void ApplyForce(Vector3 force, ForceMode forceMode)
 {
     rb.AddForce(force, forceMode);
 }
Ejemplo n.º 54
0
 /// <summary>
 ///   <para>Adds a force to the rigidbody.</para>
 /// </summary>
 /// <param name="force">Force vector in world coordinates.</param>
 /// <param name="mode"></param>
 public void AddForce(Vector3 force, [DefaultValue("ForceMode.Force")] ForceMode mode)
 {
     Rigidbody.INTERNAL_CALL_AddForce(this, ref force, mode);
 }
Ejemplo n.º 55
0
    //applies the force necessary to reach the desired velocity
    private static void ApplyForceToReachVelocity(Rigidbody rigidbody, Vector3 velocity, float force = 1, ForceMode mode = ForceMode.Force)
    {
        if (force == 0 || velocity.magnitude == 0)
        {
            return;
        }

        velocity += velocity.normalized * 0.2f * rigidbody.drag;

        force = Mathf.Clamp(force, -rigidbody.mass / Time.fixedDeltaTime, rigidbody.mass / Time.fixedDeltaTime);

        if (rigidbody.velocity.magnitude == 0)
        {
            rigidbody.AddForce(velocity * force, mode);
        }
        else
        {
            var velocityProjectedToTarget = (velocity.normalized * Vector3.Dot(velocity, rigidbody.velocity) / velocity.magnitude);
            rigidbody.AddForce((velocity - velocityProjectedToTarget) * force, mode);
        }
    }
Ejemplo n.º 56
0
 private static extern void INTERNAL_CALL_AddForce(Rigidbody self, ref Vector3 force, ForceMode mode);
Ejemplo n.º 57
0
 private void ApplyMovement(Vector3 targetVelocity, float force, ForceMode forceMode)
 {
     rb.AddForce(targetVelocity * force, forceMode);
 }
Ejemplo n.º 58
0
        public void AddForce(float x, float y, float z)
        {
            ForceMode mode = ForceMode.Force;

            this.AddForce(x, y, z, mode);
        }
Ejemplo n.º 59
0
 public void Rotate(Vector3 torque, float magnitude, ForceMode forcemode)
 {
     thisRigidBody.AddTorque(torque, forcemode);
 }
Ejemplo n.º 60
0
 private static extern void INTERNAL_CALL_AddExplosionForce(Rigidbody self, float explosionForce, ref Vector3 explosionPosition, float explosionRadius, float upwardsModifier, ForceMode mode);