![article thumbnail image](https://blog.kakaocdn.net/dn/OrxUk/btqH0VRk4Qw/s6fo3dimsanTT7c64kw41K/img.gif)
Resource Manager
public class PrefabTest : MonoBehaviour
{
GameObject prefab;
GameObject tank;
void Start()
{
// Load 기준: Resources 폴더
prefab = Resources.Load<GameObject>("Prefabs/Tank");
tank = Instantiate(prefab); // 생성
Destroy(tank, 3.0f); // 삭제
}
}
누가 언제 뭘 만드는지 관리하기가 힘들기 때문에 하나의 Manager로 처리하는 편이 좋다.
폴더 정리
Shader: 빛이 플레이어를 관통했을 때 어떻게 반사되느냐를 정의하는 파일이라고 생각하면 된다.
Model Prefab은 Prefab이 아니라 그냥 별도의 Model, 애셋이라고 생각하자.
Collider
Rigidbody
docs.unity3d.com/ScriptReference/Rigidbody.html
Unity - Scripting API: Rigidbody
Adding a Rigidbody component to an object will put its motion under the control of Unity's physics engine. Even without adding any code, a Rigidbody object will be pulled downward by gravity and will react to collisions with incoming objects if the right C
docs.unity3d.com
자주 사용하는 옵션 - Mass: 질량(kg) / Use Gravity: 중력을 사용할 것인지 / is Kinematic / Constraints
두 Collider가 충돌하는 것이기 때문에 Player만 Collider를 가지고 있어서는 아무런 처리를 할 수 없음에 유의한다!
Collision
Rigidbody - is Kinematic: 유니티 물리의 영향 여부
단, is Kinematic을 끄면 Use Gravity 여부에 상관없이 중력 또한 적용되지 않는다. 중력도 물리에 포함되기 때문이다.
Rigidbody는 물리를 사용하기 위해 붙이는 거라고 했는데, 이렇게 꺼 버리면 대체 무슨 쓸모가 있을까?
=> 물리뿐만 아니라, 충돌 판정을 이용하기 위해서!
public class TestCollision : MonoBehaviour
{
private void OnCollisionEnter(Collision collision)
{
Debug.Log("Collision !");
}
}
is Kinematic 켜기 / Player의 Capsule Collider 끔 / Cube의 Box Collider 끔 -> Collision X
Player의 Capsule Collider - is Trigger 켬 / Cube의 Box Collider - is Trigger 켬 -> Collision X, Trigger O
생각보다 Collision의 조건이 복잡하다.
1) 나한테 Rigidbody가 있어야 한다. (isKinematic : Off)
2) 나한테 Collider가 있어야 한다. (isTrigger : Off)
3) 상대한테 Collider가 있어야 한다. (isTrigger : Off)