Скрипт C# для создания магнита Rigidbody в Unity

Ниже приведен сценарий, который генерирует поведение, подобное magnet, по отношению к Rigidbodies в Unity:

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

  • Создайте новый GameObject и назначьте скрипт SC_RigidbodyMagnet для него.
  • Добавьте Sphere Collider к вновь созданному объекту, отметьте его как Trigger, затем увеличьте его радиус.
  • Создайте пару кубов и добавьте к ним компонент Rigidbody.

Нажмите Play, затем переместите объект со сценарием SC_RigidbodyMagnet над Rigidbodies, обратите внимание, как Rigidbodies втягиваются.

Рекомендуемые статьи
Работа с компонентом Rigidbody Unity
Создание гоночной игры, основанной на физике, в Unity
Как проверить, опирается ли Rigidbody Player на Unity
Создание ракетницы в Unity
Добавление физики прыгающего мяча в Unity
Создание симуляции флага в Unity
Реализация механики майнинга в игре Unity