Script C# para criar um ímã de corpo rígido no Unity

Abaixo está o script que gera um comportamento semelhante a um ímã em relação aos Rigidbodies em Unity:

Sharp Coder Reprodutor de vídeo

Passos

  • Crie um novo script, chame-o de SC_RigidbodyMagnet e cole o código abaixo dentro dele:

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

  • Crie um novo GameObject e atribua o script SC_RigidbodyMagnet a ele
  • Adicione um Sphere Collider a um objeto recém-criado, marque-o como Trigger e aumente seu raio
  • Crie alguns cubos e adicione um componente Rigidbody a eles

Pressione Play e mova o script Object com SC_RigidbodyMagnet sobre os Rigidbodies, observe como os Rigidbodies estão sendo puxados.

Artigos sugeridos
Trabalhando com o componente Rigidbody do Unity
Adicionando física de bola quicando no Unity
Criando um jogo de corrida baseado em física no Unity
Implementando um gancho 2D no Unity
Implementando Mecânica de Mineração no Unity Game
DestroyIt - Sistema de Destruição - Revisão do Pacote Unity Asset Store
Criando um lançador de foguetes no Unity