Tập lệnh C# để tạo nam châm cứng trong Unity

Dưới đây là tập lệnh tạo ra hành vi giống magnet đối với các Vật thể rắn trong Unity:

Sharp Coder Trình phát video

bước

  • Tạo một tập lệnh mới, gọi nó là SC_RigidbodyMagnet rồi dán đoạn mã bên dưới vào trong tập lệnh đó:

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

  • Tạo một GameObject mới và gán tập lệnh SC_RigidbodyMagnet cho nó
  • Thêm một Sphere Collider vào một đối tượng mới được tạo, đánh dấu nó là Trigger rồi tăng bán kính của nó
  • Tạo một vài khối và thêm thành phần Rigidbody vào chúng

Nhấn Play sau đó di chuyển Đối tượng có tập lệnh SC_RigidbodyMagnet qua các Rigidbodies, chú ý cách các Rigidbodies được kéo vào.