객체에 다양한 물리 법칙을 적용
Add Component를 통해서 다양한 물리 법칙을 적용시킬 수 있다.
Rigidbody 2d = 객체에 중력을 적용
Collider = 객체에 충돌 처리를 위한 형태를 정의
rain과 ground가 서로 충돌한다 !
rain 오브젝트가 ground, rtan 오브젝트와 충돌했을 때 사라지게 하려면 ground, rtan에 각각 name tag를 부여하여 rain이 지금 어떤 오브젝트와 충돌했고 어떤 행동을 해야할지 지정해줄 수 있다.
public class rain : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "ground")
{
Destroy(gameObject);
}
}
}
OnCollisionEnter2D
= Collider가 부여된 오브젝트 간의 충돌 발생시 호출된다.
Destroy
= 제거한다.
int type;
float size;
int score;
// Start is called before the first frame update
void Start()
{
float x = Random.Range(-2.7f, 2.7f);
float y = Random.Range(3f, 5f);
transform.position= new Vector3(x,y,0);
type = Random.Range(1, 4);
if (type == 1)
{
size = 1.2f;
score = 3;
GetComponent<SpriteRenderer>().color = new Color(100 / 255f, 100 / 255f, 255 / 255f, 255 / 255f);
}
else if (type == 2)
{
size = 1.0f;
score = 2;
GetComponent<SpriteRenderer>().color = new Color(130 / 255f, 130 / 255f, 255 / 255f, 255 / 255f);
}
else
{
size = 0.8f;
score = 1;
GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 255f, 255 / 255f);
}
transform.localScale= new Vector3(size,size,0);
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "ground")
{
Destroy(gameObject);
}
}
Random.Range(x,y);
= x, y 값 사이의 무작위의 값을 사용
GetComponent<SpriteRenderer>().color
= 스프라이트의 컬러를 제어
type
에 지정해둔 빗방울의 속성이 무작위로 생성된다.
prefab = 만들어둔 오브젝트를 마치 class
화 시켜서 저장하여 재사용하기 용이하게 한다.
Hierarchy 탭에 만들어둔 rain 객체를 prefab 폴터도 드래그 앤 드랍 후 기존의 rain은 삭제
gameMananer = 프로젝트의 전반적인 모든 부분을 다룰 수 있는 오브젝트
스크립트에 gameManager를 생성하면 유니티에서 자동으로 인식하여 아이콘이 바뀐다.
public class gameManager : MonoBehaviour
{
public GameObject rain;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("makeRain", 0, 0.1f);
}
// Update is called once per frame
void Update()
{
}
void makeRain()
{
Instantiate(rain);
}
}
public GameObject rain;
= rain 오브젝트를 gameManager에서 사용할 것이다.
InvokeRepeating("makeRain", 0, 0.1f);
= ("함수 이름", 시작 시간, 반복 주기)
즉 makeRain
이라는 함수를 0초에 시작하여 0.1초 마다 반복한다.
Instantiate(rain);
= preFab화 시킨 오브젝트를 복제한다.
public GameObject rain;
rain이 어떤 스크립트인지 지정해준다.
preFab화 시킨 rain 오브젝트가 0.1초 마다 생성된다 !