c#(35)
-
[Unity] 오브젝트 통과와 충돌, 제거(Collider / Rigid Body / Destroy)
오브젝트 통과하나의 게임 오브젝트가 다른 오브젝트와 충돌하면 OnTriggerEnter를 호출하게 되며 둘 다 Collider가 있어야 한다. 플레이어 오브젝트에 Rigid Body가 있어야 하며 Is Kinematic 체크가 활성화되어있어야 한다. 두 오브젝트 모두 Is Trigger 체크박스를 활성화하면 충돌이 발생하지 않으므로 하나에만 체크해야 한다.(**Is Kinematic 체크 활성화는 물리 계산을 하지 않는다는 뜻이다. Kinematic 뜻 자체가 운동학이라는 뜻이라 조금 헷갈린다.) public class MoveScript : MonoBehaviour{ public float speed = 2; private void OnTriggerEnter(Collider other) ..
2023.08.17 -
[Unity] GameObject.Find
GameObject.Findpublic class Test : MonoBehaviour{ GameObject other; void Start() { other = GameObject.Find("Obj2"); other.GetComponent().material.color = Color.red; }}Hierarchy에서 "Obj2"라는 이름의 오브젝트를 찾은 후 색을 바꿀 수 있다. public class Test : MonoBehaviour{ public GameObject other; void Start() { other.GetComponent().material.color = Color.red; }}public Game..
2023.08.16 -
[Unity] 오브젝트의 위치와 이동 (transform.position / transform.Translate / normalized)
오브젝트의 위치 읽어오기public class Test : MonoBehaviour{ void Start() { Vector3 pos; pos = transform.position; print(pos); }}해당 오브젝트의 현재 위치를 읽어오려면 위의 코드를 사용하면 되며, x, y, z 특정 위치를 알고자 한다면 pos = transform.position.x의 형식으로 지정해 주면 된다. 오브젝트 위치 입력하기transform은 프로퍼티 get, set을 쓰기 때문에 transform.position.x = 10; 은 오류가 발생한다. Vector3 값을 transform.position에 대입하면 된다. 아래와 같은 예시로 살펴볼 수 있다...
2023.08.14 -
[Unity] 변수를 보호하는 방법(캡슐화) - 접근 제한자 / 프로퍼티
접근 제한자 이용public class Test : MonoBehaviour{ public class Player { private int hp; public int GetHP() { return hp; } public void SetHP(int value) { hp = value; } } void Start() { Player player = new Player(); player.SetHP(50); int hp = player.GetHP(); print(hp); }}Player 클래스를 하나 만들..
2023.08.14 -
[Unity] Generic 문법 / GetComponent로 오브젝트 색깔 바꾸기
함수 오버로딩을 통해 int, float 등 형에 상관 없이 사용할 수 있다. 하지만 모든 함수에 오버로딩을 하기에는 불가능하기 때문에 Generic을 사용한다.public class TestGeneric{ public T GenericMethod(T param) { return param; }}T는 임의의 타입이며 로 T 타입을 사용할 것임을 알려준다. (T param)의 T는 입력 파라미터 타입의 T이다.T를 이용한 함수 하나만 만들어두면 어떤 데이터 타입으로도 사용될 수 있다. public class Test : MonoBehaviour{ public class TestClass { public int TestFunc(int param) ..
2023.08.14 -
[Unity] Enum / 키보드 입력(GetKey, GetButton) / 마우스 입력(GetMouseButton, 마우스 이벤트)
Enum(열거형)숫자로 되어 있는 값을 상수로 바꾸어 사용하는 타입. 숫자로 되어있을 경우 오류 발생이 쉽기 때문에 사용한다.public class Test : MonoBehaviour{ public enum Season {Spring, Summer, Autumn, Winter}; void Start() { Season s = Season.Spring; if (s == Season.Spring) { print(s); } }}Season s 로 변수 선언이 가능하고, Season.Spring으로 값 받을 수 있다. 문자로 값을 불러왔지만 내부적으로는 숫자로 인덱스 되어있다. Input.GetKey키보드 입력을 ..
2023.08.11