Script C# per la creazione di un magnete a corpo rigido in Unity

Di seguito è riportato lo script che genera un comportamento simile a un magnete verso i corpi rigidi in Unity:

Sharp Coder Lettore video

Passi

  • Crea un nuovo script, chiamalo SC_RigidbodyMagnet quindi incolla il codice seguente al suo interno:

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

  • Crea un nuovo GameObject e assegnagli lo script SC_RigidbodyMagnet
  • Aggiungi uno Sphere Collider a un oggetto appena creato, contrassegnalo come Trigger quindi aumenta il suo raggio
  • Crea un paio di cubi e aggiungi loro un componente Rigidbody

Premi Riproduci quindi sposta l'oggetto con lo script SC_RigidbodyMagnet sui corpi rigidi, nota come i corpi rigidi vengono tirati dentro.

Articoli suggeriti
Lavorare con il componente Rigidbody di Unity
Creazione di un gioco di corse basato sulla fisica in Unity
Implementazione della fisica nei giochi Made in Unity
Unity Come trascinare il corpo rigido utilizzando il cursore del mouse
Implementazione di un rampino 2D in Unity
Creazione di una simulazione di bandiera in Unity
Implementazione della meccanica mineraria in Unity Game