C#-Skript zum Erstellen eines Rigidbody-Magneten in Unity

Unten ist das Skript, das ein magnet-ähnliches Verhalten gegenüber den Rigidbodies in Unity erzeugt:

Sharp Coder Videoplayer

Schritte

  • Erstellen ein neues Skript, nennen Sie es SC_RigidbodyMagnet und fügen Sie dann den folgenden Code ein:

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

  • Erstellen Sie ein neues GameObject und weisen das SC_RigidbodyMagnet-Skript zu
  • Fügen Sie einen Sphere Collider zu einem neu erstellten Objekt hinzu, markieren Sie ihn als Trigger und erhöhen Sie dann seinen Radius
  • Erstellen Sie ein paar Cubes und fügen Sie ihnen eine Rigidbody-Komponente hinzu

Drücken Sie Play und bewegen Sie dann das Objekt mit dem SC_RigidbodyMagnet-Skript über die Rigidbodies. Beachten Sie, wie die Rigidbodies eingezogen werden.

Empfohlene Artikel
Arbeiten mit der Rigidbody-Komponente von Unity
Erstellen eines physikbasierten Rennspiels in Unity
So erkennen Sie Kollisionen mithilfe von Code in Unity
Implementierung eines 2D-Grappling-Hooks in Unity
Erstellen einer Flaggensimulation in Unity
Erstellen eines Raketenwerfers in Unity
Hinzufügen der Hüpfballphysik in Unity