Script C# pentru crearea unui magnet cu corp rigid în Unity

Mai jos este scriptul care generează un comportament asemănător magnet față de Rigidbodies în Unity:

Sharp Coder Video player

Pași

  • Creați un nou script, numiți-l SC_RigidbodyMagnet apoi inserați codul de mai jos în interiorul acestuia:

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ți un nou GameObject și atribuiți scriptul SC_RigidbodyMagnet
  • Adăugați un Sphere Collider la un obiect nou creat, marcați-l ca Trigger, apoi creșteți-i raza
  • Creați câteva cuburi și adăugați-le o componentă Rigidbody

Apăsați Play apoi mutați scriptul Object with SC_RigidbodyMagnet peste Rigidbodies, observați cum sunt trase Rigidbodies.

Articole sugerate
Lucrul cu componenta Rigidbody a Unity
Crearea unui joc de curse bazat pe fizică în Unity
Implementarea unui grappling 2D în Unity
Crearea unui lansator de rachete în Unity
Faceți Tornado Physics în Unity
Implementarea fizicii în jocurile create în Unity
Implementarea mecanicii miniere în Unity Game