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가 어떻게 당겨지는지 확인하세요.

추천 기사
Unity의 Rigidbody 컴포넌트 작업
Unity로 제작된 게임에 물리 구현
Unity에서 2D 그래플링 후크 구현
Rigidbody 플레이어가 Unity에 고정되어 있는지 확인하는 방법
Unity에서 코드를 사용하여 충돌을 감지하는 방법
Unity에서 로켓 발사기 만들기
Unity의 레이캐스팅 뒤에 숨은 물리학