用于在 Unity 中创建刚体磁铁的 C# 脚本

下面是针对 Unity 中的刚体生成类似 magnet 行为的脚本:

Sharp Coder 视频播放器

脚步

  • 创建 一个新脚本,将其命名为 SC_RigidbodyMagnet,然后将以下代码粘贴到其中:

SC_RigidbodyMagnet.cs

using System.Collections.Generic;
using UnityEngine;

public class SC_RigidbodyMagnet : MonoBehaviour
{
    public float magnetForce = 100;

    List<Rigidbody> caughtRigidbodies = new List<Rigidbody>();

    void FixedUpdate()
    {
        for (int i = 0; i < caughtRigidbodies.Count; i++)
        {
            caughtRigidbodies[i].velocity = (transform.position - (caughtRigidbodies[i].transform.position + caughtRigidbodies[i].centerOfMass)) * magnetForce * Time.deltaTime;
        }
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.GetComponent<Rigidbody>())
        {
            Rigidbody r = other.GetComponent<Rigidbody>();

            if(!caughtRigidbodies.Contains(r))
            {
                //Add Rigidbody
                caughtRigidbodies.Add(r);
            }
        }
    }

    void OnTriggerExit(Collider other)
    {
        if (other.GetComponent<Rigidbody>())
        {
            Rigidbody r = other.GetComponent<Rigidbody>();

            if (caughtRigidbodies.Contains(r))
            {
                //Remove Rigidbody
                caughtRigidbodies.Remove(r);
            }
        }
    }
}

  • 创建一个新的游戏对象并分配 SC_RigidbodyMagnet 脚本给它
  • 球体碰撞器添加到新创建的对象中,将其标记为触发器,然后增加其半径
  • 创建几个立方体并向其中添加 Rigidbody 组件

Play,然后使用 SC_RigidbodyMagnet 脚本将对象移动到刚体上,注意刚体是如何被拉入的。

推荐文章
使用 Unity 的 Rigidbody 组件
在 Unity 中添加弹跳球物理
在 Unity 中创建基于物理的赛车游戏
在 Unity 中实现 2D 抓钩
在 Unity 中创建旗帜模拟
在 Unity 游戏中实现采矿机制
如何检查 Rigidbody 播放器是否在 Unity 中接地