오브텍트의 재질 접근은 MeshRenderer를 통해서 접근한다.
MeshRenderer mesh;
Material mat;
void Start()
{
mesh = GetComponent<MeshRenderer>();
mat = mesh.material;
}
CollisionEnter : 물리적 충돌이 시작할 때 호출되는 함수. --> 충돌 시작
CollisionStay: 충돌이 쭉 일어날때. --> 충돌 중
CollisionExit : 물리적 충돌이 끝났을 때 호출되는 함수. --> 충돌 끝.
칼라
Color : 기본 색상 클래스,
Color32 : 255 색상 클래스
private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.name == "My Ball")
mat.color = new Color(1, 1, 1);
}
private void OnCollisionExit(Collision collision)
{
if (collision.gameObject.name == "My Ball")
mat.color = new Color(0, 0, 0);
}
Collision 충돌 정보 클래스
투명하게하기 : Rendering Mode를 Transparent로 설정하고 albedo color에서 a(알파)값을 내려야한다.
트리거 이벤트
Box Collider에서 Is Trigger 체크함.
TriggerStay: 콜라이더가 계속 충돌하고 있을 때 호출한다.
Rigidbody rigid; //선언
// Start is called before the first frame update
void Start()
{
//초기화
rigid = GetComponent<Rigidbody>();
}
// Update is called once per frame
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Vector3 vec = new Vector3(h, 0, v);
rigid.AddForce(vec, ForceMode.Impulse);
}
private void OnTriggerStay(Collider other)
{
if(other.name == "Cube")
{
rigid.AddForce(Vector3.up * 2, ForceMode.Impulse);
}
}
//실제 물리적인 충돌로 발생하는 이벤트
void OnCollisionEnter(Collision collision) {}
void OnCollisionStay(Collision collision) {}
void OnCollisionExit(Collision collision) {}
//콜라이더 충돌로 발생하는 이벤트
void OnTriggerEnter(Collider other){}
void OnTriggerStay(Collider other){}
void OnTriggerExit(Collider other){}