Unity에서 강체 자석을 생성하기 위한 C# 스크립트

다음은 Unity의 Rigidbodies에 대해 magnet와 유사한 동작을 생성하는 스크립트입니다.

Sharp Coder 비디오 플레이어

단계

  • 새 스크립트를 만들고 이를 SC_RigidbodyMagnet이라고 명명한 다음 그 안에 아래 코드를 붙여넣습니다.

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

Play를 누른 다음 SC_RigidbodyMagnet 스크립트를 사용하여 개체를 Rigidbodies 위로 이동하고 Rigidbodies가 어떻게 당겨지는지 확인하세요.