C#-script til at skabe en rigidbody-magnet i enhed

Nedenfor er scriptet, der genererer magnet-lignende adfærd mod Rigidbodies i Unity:

Sharp Coder Videoafspiller

Trin

  • Opret et nyt script, kald det SC_RigidbodyMagnet og indsæt derefter koden nedenfor i det:

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

  • Opret et nyt GameObject og tildel SC_RigidbodyMagnet-scriptet til det
  • Tilføj en Sphere Collider til et nyoprettet objekt, markér det som Trigger og øg dets radius
  • Opret et par kuber og tilføj en Rigidbody-komponent til dem

Tryk på Play og flyt derefter objektet med SC_RigidbodyMagnet-scriptet over Rigidbodies, læg mærke til, hvordan Rigidbodies bliver trukket ind.

Foreslåede artikler
Arbejde med Unitys Rigidbody-komponent
Tilføjelse af hoppeboldfysik i enhed
Implementering af fysik i spil lavet i enhed
Oprettelse af et fysikbaseret racerspil i Unity
Implementering af en 2D-gribekrog i Unity
Oprettelse af en flagsimulering i Unity
Implementering af minedriftsmekanik i Unity Game