๊ฒ์ ๋ฐฐ๊ฒฝ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ค๋ณด๋ฉด, ์ค๋ธ์ ํธ ์ค์์ ์บ๋ฆญํฐ๊ฐ ํ๊ดด ์ํฌ์ ์๋ ์ค๋ธ์ ํธ๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฌํ ํ๊ดด ๊ฐ๋ฅํ ์ค๋ธ์ ํธ๋ฅผ, ์ ๋ํฐ์ Rigidbody๋ฅผ ์ด์ฉํด์, ํ๊ดด ์ค๋ธ์ ํธ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
Collidr (์ฝ๋ผ์ด๋ ): Collider ์ปดํฌ๋ํธ๋ ๋ฌผ๋ฆฌ ์ถฉ๋ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ค๋ธ์ ํธ์ ํํ๋ฅผ ์ ์ํฉ๋๋ค.
์ฝ๋ผ์ด๋๋ ๋ณด์ด์ง ์๋ ์์์ด๋ฏ๋ก ์ค๋ธ์ ํธ์ ๋ฉ์์ ์ ํํ ๋์ผํ ๋ชจ์์ผ ํ์๋ ์์ผ๋ฉฐ,
์ค์ ๋ก๋ ๊ฒ์ํ๋ ์ด ์์๋ ๋๋ต์ ์ธ ๊ทผ์ฌ์น๋ก๋ ํฌ๊ฒ ๊ตฌ๋ถ๋์ง ์์ผ๋ฉฐ ๋ ํจ์จ์ ์
๋๋ค.
Rigidbody(๋ฆฌ์ง๋๋ฐ๋) : Rigidbody ๋ GameObject ๊ฐ ๋ฌผ๋ฆฌ ์ ์ด๋ก ๋์ํ๊ฒ ํฉ๋๋ค.
๋ฆฌ์ง๋๋ฐ๋๋ ํ๊ณผ ํ ํฌ๋ฅผ ๋ฐ์ ์ค๋ธ์ ํธ๊ฐ ์ฌ์ค์ ์ผ๋ก ์์ง์ด๋๋ก ํด์ค๋๋ค.
๋ฆฌ์ง๋๋ฐ๋๊ฐ ํฌํจ๋ ๋ชจ๋ ๊ฒ์ ์ค๋ธ์ ํธ๋ ์ค๋ ฅ์ ์ํฅ์ ๋ฐ์์ผ ํ๋ฉฐ ์คํฌ๋ฆฝํ
์ ํตํด ๊ฐํด์ง ํ์ผ๋ก ์์ง์ด๊ฑฐ๋ NVIDIA PhysX ๋ฌผ๋ฆฌ ์์ง์ ํตํด ๋ค๋ฅธ ์ค๋ธ์ ํธ์ ์ํธ ์์ฉํด์ผ ํฉ๋๋ค.
Collider ๋ฒ์๋ฅผ ์ด์ฉํ ์ค๋ธ์ ํธ ์ ์ด๋ฅผ, ์๋ ๊ธ์์ ์ฝ์ด๋ณด์๋ฉด, ๋ฐฐ๊ฒฝ ๊ทธ๋ํฝ ๋์์ด๋๋ ์ฝ๊ฒ
์ ๋ํฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํด์ ๋ง๋ค ์ ์์ต๋๋ค.
์ ๋ํฐ์์๋ RigidBody๊ฐ ์ ์ฉ๋ ์ค๋ธ์ ํธ 2๊ฐ๋ฅผ ์๋ก ๊ฒน์น๊ฒ ๋ฐฐ์นํ๊ณ , ํ๋ ์ด ๋ฒํผ์ ์คํํ๋ฉด
์๋ก ํ๊ฒจ๋ด๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์๋ก ํ๊ฒจ๋ด๋ ์ฑ์ง์ ์ด์ฉํด์ ํ๊ดด ์ค๋ธ์ ํธ๋ฅผ ์คํฌ๋ฆฝํธ๋ก ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ด์ฅ๋ RigidBody๋ฅผ ์ด์ฉํ๋๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋น์ฉ์ ์ธ ์ธก๋ฉด์์๋ ํฌ๊ฒ ๋น์ธ์ง ์์๊ฒ์ ๋๋ค.
๋์๋ธ๋ก3 ์ฒ๋ผ ํ๋ฉด์ ๋ช ์ญ๊ฐ์ฉ ์กด์ฌํ๋ ํ๊ดด ์ค๋ธ์ ํธ๋ ์คํฌ๋ฆฝํธ ํ๊ฐ๋ก ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ํ๊ดด ์ํฌ ์ค๋ธ์ ํธ๋ฅผ ํด๋ฆฌ๊ณค ๋จ์๋ก ๋ถ๋ฆฌ๋ ํด์ผ ํฉ๋๋ค. ์๋์ผ๋ก ์ ๋ํฐ์์ ๋ถ๋ฆฌ์์ผ ํ๊ดด๋์ง ์์ผ๋๊น..
ํ๊ดด ์ํฌ ์ค๋ธ์ ํธ๋ ๋๋ต 5-7๊ฐ ์ ๋๋ก ๋ถ๋ฆฌํ๋๊ฒ ์ ๋น.
์ฃผ๋๋ ํ๊ดด ์ค๋ธ์ ํธ๋ฅผ Assets ์ผ๋ก ๋ฑ๋กํฉ๋๋ค.
Game object > Create Empty
๋น ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋น ์ค๋ธ์ ํธ์ ์์์ผ๋ก ํ๊ดด ์ค๋ธ์ ํธ๋ฅผ ๋ฑ๋ก ํฉ๋๋ค.
4.๋ฑ๋ก๋ ์ค๋ธ์ ํธ์ Collider ์ Rigidbody ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐ
๋ถ๋ชจ๋ก ๋ง๋ ๋น ์ค๋ธ์ ํธ์ ์์์ผ๋ก ๋ฑ๋ก๋ ์ค๋ธ์ ํธ์ Box Collider์ Rigidbody ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
Box Collider์ RIgidbody ์ปดํฌ๋ํธ ๋ํ ์คํฌ๋ฆฝํธ๋ก ์ถ๊ฐ๊ฐ๋ฅ.
Position , Rotation์ X,Y,Z ๋ถ๋ถ์ ๋ชจ๋ ์ฒดํฌํด์, Freeze ์ํค๋ฉด, ํํธ๋ค์ด ์ ์์ง์ ๋๋ค.
Constraints ๋ฅผ Freeze ์ฒดํฌ, ์ฒดํฌ ํด์ ๊ฐ ์คํฌ๋ฆฝํธ์ ํต์ฌ ๋ถ๋ถ์ด ๋ ๊ฒ์ ๋๋ค.
๋ถ๋ชจ๋ก ๋ง๋ ๋น ์ค๋ธ์ ํธ์ Collider ๋ฒ์๋ฅผ ๋ฌด๊ธฐ๊ฐ ์ ์ด(OnTriggerEnter)์ ํ๋ฉด ์์ ์ค๋ธ์ ํธ์ Constraints๋ฅผ ์ฒดํฌ ํด์ ํ๋ฉด ๋ฉ๋๋ค.
์๋๋ ์คํฌ๋ฆฝํธ์
๋๋ค.
using UnityEngine;
using System.Collections;
public class destroyobject : MonoBehaviour { // destroyobject ๋ ์คํฌ๋ฆฝํธ ์ด๋ฆ์ ๋๋ค.
public Collider[] colliders; // ์์์ค๋ธ์ ํธ์ ์์ฐจ์ ์ผ๋ก ์ปดํผ๋ํธ๋ฅผ ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํ ๋ฐฐ์ด
public float Mass = 1; // Rigidbody Mass ์ ์ด
public float Drag = 2; // Rigidbody Drag ์ ์ด
void Awake(){ // ์คํ ์ , ์ฌ์ ์ค๋น๋ฅผ ํ๊ธฐ ์ํด์ Awake() ์ฌ์ฉํฉ๋๋ค.
colliders = gameObject.GetComponentsInChildren<Collider>(); // ์์ ์ค๋ธ์ ํธ์ ์ปดํผ๋ํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
foreach(Collider item in colliders) // For ๋ฌธ๊ณผ ๋น์ทํ๊ฒ ์์ ์ค๋ธ์ ํธ ๊ฐ์๋งํผ ๋ฐ๋ณต
{
item.rigidbody.constraints = (RigidbodyConstraints)126; // rigidbody.constraints ๊ฐ์ ์์ (Freeze All ์ํ)
item.rigidbody.mass = Mass;
item.rigidbody.drag = Drag;
}
}
void OnTriggerEnter(Collider col) //๋ถ๋ชจ๋ก ๋ง๋ ๋น ์ค๋ธ์ ํธ์ Collider๋ฅผ ๊ฑด๋๋ฆฌ๋ฉด (๋๊ฐ ๊ฑด๋๋ ธ๋์ง ํ์ธ)
{
if(col.tag == "Weapon") // ๋ง์ฝ "Weapon" ํ๊ทธ๋ก ์ง์ ๋ ๋ฌด๊ธฐ๊ฐ Collider๋ฅผ ๊ฑด๋๋ฆฌ๋ฉด
{
colliders = gameObject.GetComponentsInChildren<Collider>();
foreach(Collider item in colliders)
{
item.rigidbody.constraints = (RigidbodyConstraints)0; //rigidbody.constraints ์ฒดํฌ ํด์
Destroy(gameObject, 10); // ํ๊ดด๋ ์ค๋ธ์ ํธ๋ 10์ด ํ์ ์ญ์ , ์ฌ๋ผ์ง๊ฒํจ
}
}
}
}
ํ๊ดด ์ฑ๊ณต
GetComponentsln Children > ์์์ค๋ธ์ ํธ์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ ์ฌ ์ ์์
public Collider[] colliders;
void Awake(){
colliders = gameObject.GetComponentsInChildren<Collider>();
foreach(Collider item in colliders)
{
item.rigidbody.constraints = (RigidbodyConstraints)126;
}
}