1. 물리충돌이벤트함수
: 이벤트가 일어났을때 호출되는 함수!
(1) 오브젝트의 재질접근 -> MeshRenderer 컴포넌트 안의 Meterial에 접근!
(2) CollisionEnter : 물리적 충돌이 시작할때 호출되는 함수 ->OnCollisionEnter(이벤트성 함수는 앞에 On이 들어감)
: 물리적 충돌상태에 있을 때 호출되는함수->OnCollisionStay
: 물리적 충돌이 끝났을때 호출되는 함수 ->OncollisionExit
(3)OnCollisionEnter 사용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OtherBall : MonoBehaviour
{
MeshRenderer mesh; //1.변수 선언
Material mat;
void Start()
{
mesh = GetComponent<MeshRenderer>(); //2.변수 할당
mat = mesh.material;
}
void OnCollisionEnter(Collision collision) //3.물리충돌할때 발생하는 함수 호출
//Collision은 충돌정보클래스
{
if(collision.gameObject.name =="MyBall") //4.MyBall Object와 충돌했을때
mat.color = new Color(0,0,0); //5. 재질의 색을 새로운 검정색으로 한다
}
}
2. 트리거 이벤트
: collider(콜라이더, 충돌체)가 오브젝트를 Is trigger(통과 , 충돌x) 했을때 이벤트
(1)관련 오브젝트 cube 생성
*tip)project 파일에서 우클릭 create - Material 생성 -> cube Inspector에 드로그앤 드랍
-> Rendering Mode 를 Transparent로 변경 -> 색상color설정에서 A부분을 조정(투명도)
*빛나는 정도는 emission에서 설정
(2)OnTrigger : 콜라이더가 겹쳐질때호출되는 함수->OnTriggerEnter
: 콜라이더가 계속 겹쳐져 있을때 호출되는함수->OnTriggerStay
: 콜라이더가 겹쳐지는것이 끝났을때 함수 ->OnTriggerExit
(3)OnTriggerStay 사용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Myball2 : MonoBehaviour
{
Rigidbody Rigid;
void FixedUpdate()
{
Rigid = GetComponent<Rigidbody>();
Vector3 vec = new Vector3(Input.GetAxis("Horizontal"),
0,
Input.GetAxis("Vertical"));
Rigid.AddForce(vec, ForceMode.Impulse);
}
void OnTriggerStay(Collider other) //1.MyBalall2 오브젝트의 트리거 이벤트 호출 함수
{
if(other.gameObject.name == "Cube"){
Rigid.AddForce(Vector3.up *2, ForceMode.Impulse);
}
}
}
'Unity > Unity3D' 카테고리의 다른 글
Unity - Rall and Ball project(1) (0) | 2020.11.05 |
---|---|
Unity- UI 기초 (0) | 2020.10.31 |
Unity -자동완성 오류 (0) | 2020.10.28 |
Unity - 힘을 이용하여 물체 움직이기 (0) | 2020.10.24 |
Unity - 물체 만들기 (0) | 2020.10.23 |