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:
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.