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.

Bài viết được đề xuất
Làm việc với Thành phần Rigidbody của Unity
Triển khai Vật lý trong các trò chơi được tạo ra trong Unity
Cách phát hiện va chạm bằng mã trong Unity
Tạo trò chơi đua xe dựa trên vật lý trong Unity
Tạo ra một bệ phóng tên lửa trong Unity
Thêm vật lý bóng nảy trong Unity
Triển khai Móc vật lộn 2D trong Unity