一个引力地球的范例

本文介绍了一个使用Unity实现磁力效果的脚本示例。该脚本通过定义作用半径、磁力强度等属性,利用Unity内置物理系统对指定图层内的刚体对象施加爆炸力,从而达到磁力吸附或排斥的效果。此外,还提供了用于视觉辅助的Gizmo绘制功能。

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);
 }
}
*/

转载于:https://www.cnblogs.com/softimagewht/archive/2010/11/19/1881660.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值