Unity3D--物体间引力模拟效果

在真实的宇宙中,小星球总是被大星球吸引过去,其实就是一种力的作用,在Unity3D中如何来模拟这种效果呢?

1、在Unity场景中建两个球体,当然,球的大小无所谓,为了区别,我们将之称为大球,小球。

2、给小球加上刚体组件,在属性面板中去掉重力选项。新建一“min”层,将小球添加到此层中。

3、新建c#代码文件,将到下代码拷贝其中,并将其附着到大球上,属性面板中即显示此代码组件,设置其引力层为“min”,设置其半径及引力大小。

4、进行游戏模式,移动大球至小球附近,小球即被慢慢吸走。引力效果实现。

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;
Rigidbody rigidbody;
colliders = Physics.OverlapSphere (transform.position + m_Position, m_Radius, m_MagneticLayers);
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 OnDrawGizmosSelected ()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere (transform.position + m_Position, m_Radius);
}
}


 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值