Unity에서 강체 자석을 생성하기 위한 C# 스크립트
다음은 Unity의 Rigidbodies에 대해 magnet와 유사한 동작을 생성하는 스크립트입니다.
단계
- 새 스크립트를 만들고 이를 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);
}
}
}
}
- 새로운 GameObject를 생성하고 여기에 SC_RigidbodyMagnet 스크립트를 할당
- 새로 생성된 객체에 Sphere Collider를 추가하고 트리거로 표시한 다음 반경을 늘립니다.
- 두 개의 큐브를 만들고 여기에 Rigidbody 구성 요소를 추가합니다.
Play를 누른 다음 SC_RigidbodyMagnet 스크립트를 사용하여 개체를 Rigidbodies 위로 이동하고 Rigidbodies가 어떻게 당겨지는지 확인하세요.