Skrypt C# do tworzenia magnesu sztywnego w Unity

Poniżej znajduje się skrypt, który generuje zachowanie podobne do magnes w stosunku do Rigidbodies w Unity:

Sharp Coder Odtwarzacz wideo

Kroki

  • Utwórz nowy skrypt, nadaj mu nazwę SC_RigidbodyMagnet i wklej do niego poniższy kod:

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

  • Utwórz nowy obiekt GameObject i przypisz do niego skrypt SC_RigidbodyMagnet
  • Dodaj Sphere Collider do nowo utworzonego obiektu, oznacz go jako Trigger, a następnie zwiększ jego promień
  • Utwórz kilka kostek i dodaj do nich komponent Rigidbody

Naciśnij Play, a następnie przesuń obiekt za pomocą skryptu SC_RigidbodyMagnet nad Rigidbodies, zwróć uwagę, jak Rigidbodies są wciągane.

Sugerowane artykuły
Praca z komponentem Rigidbody firmy Unity
Tworzenie gry wyścigowej opartej na fizyce w Unity
Tworzenie wyrzutni rakiet w Unity
Implementowanie fizyki w grach stworzonych w Unity
Dodanie fizyki odbijającej się piłki w Unity
Tworzenie symulacji flagi w Unity
Implementacja mechaniki górnictwa w grze Unity