using UnityEngine;
using System.Collections;

public class Magnetic : MonoBehaviour
{
    public LayerMask m_MagneticLayers; //定义层
    public Vector3 m_Position; //定义向量
    public float m_Radius; //定义半径
    public float m_Force; //定义力学

    void FixedUpdate ()
    {
        Collider[] colliders; //定义一个COL
        Rigidbody rigidbody; //定义一个刚体

        colliders = Physics.OverlapSphere (transform.position + m_Position, m_Radius, m_MagneticLayers); //检测在m_Radius是否有COL相交 可以做某个半径的响应
        foreach (Collider collider in colliders)
        {
            rigidbody = (Rigidbody) collider.gameObject.GetComponent (typeof (Rigidbody));
            if (rigidbody == null)
            {
                continue;
            }
            rigidbody.AddExplosionForce (m_Force * -1, transform.position + m_Position, m_Radius); //施加力
        }
    }

    void OnDrawGizmos() //绘制一个用于观察的虚拟体范围
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere (transform.position + m_Position, m_Radius);
    }
}

/*
var radius = 5.0;
var power = 10.0;
function Start ()
{
 // Applies an explosion force to all nearby rigidbodies
 var explosionPos : Vector3 = transform.position;
 var colliders : Collider[] = Physics.OverlapSphere (explosionPos, radius);

 for (var hit : Collider in colliders)
 {
  if (!hit)
  continue;

  if (hit.rigidbody)
  hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 3.0);
 }
}
*/

相关文章:

  • 2021-10-02
  • 2022-01-09
  • 2021-06-12
  • 2021-07-18
  • 2022-12-23
  • 2021-09-08
  • 2021-12-20
  • 2021-12-08
猜你喜欢
  • 2022-12-23
  • 2022-02-16
  • 2022-12-23
  • 2021-11-23
  • 2021-07-11
  • 2021-09-24
  • 2021-06-22
相关资源
相似解决方案