C#-script voor het maken van een Rigidbody-magneet in Unity

Hieronder staat het script dat magnet-achtig gedrag genereert ten opzichte van de Rigidbodies in Unity:

Sharp Coder Video speler

Stappen

  • Maak een nieuw script, noem het SC_RigidbodyMagnet en plak de onderstaande code erin:

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

  • Maak een nieuw GameObject en wijs het SC_RigidbodyMagnet-script eraan toe
  • Voeg een Sphere Collider toe aan een nieuw gemaakt object, markeer het als Trigger en vergroot vervolgens de straal
  • Maak een paar kubussen en voeg er een Rigidbody-component aan toe

Druk op Afspelen en verplaats vervolgens het object met het SC_RigidbodyMagnet-script over de stijve lichamen, merk op hoe de stijve lichamen naar binnen worden getrokken.

Voorgestelde artikelen
Werken met Unity's Rigidbody Component
Een op fysica gebaseerd racespel maken in Unity
Een vlaggensimulatie maken in Unity
Een raketwerper maken in Unity
Het implementeren van natuurkunde in games gemaakt in eenheid
Implementatie van een 2D-grijphaak in Unity
Hoe u kunt controleren of een Rigidbody-speler geaard is in eenheid