Script C# para crear un imán de cuerpo rígido en Unity

A continuación se muestra el script que genera un comportamiento similar a un imán hacia los Rigidbodies en Unity:

Sharp Coder Reproductor de video

Pasos

  • Crea un nuevo script, llámalo SC_RigidbodyMagnet y luego pega el siguiente código dentro de él:

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 nuevo GameObject y asígnale el script SC_RigidbodyMagnet.
  • Agregue un Sphere Collider a un objeto recién creado, márquelo como Trigger y luego aumente su radio
  • Crea un par de cubos y agrégales un componente Rigidbody

Presione Reproducir y luego mueva el objeto con el script SC_RigidbodyMagnet sobre los Rigidbodies, observe cómo se atraen los Rigidbodies.

Artículos sugeridos
Trabajar con el componente Rigidbody de Unity
Agregar física de pelota que rebota en Unity
Creando un juego de carreras basado en la física en Unity
Implementación de un gancho de agarre 2D en Unity
Implementación de mecánicas de minería en el juego Unity
Cómo comprobar si un reproductor de cuerpo rígido está basado en Unity
DestroyIt - Sistema de destrucción - Revisión del paquete Unity Asset Store