TIL

2024 08 24

noc777 2024. 8. 24. 10:43

1-5 빗방울만들기

 

오브젝트 생성

 

hirearchy 창에서 2d object -> sprite -> circle  

 

위치를 x 0 y 4 색상을  R 150 G 150 B 255 로 변경

 

오브젝트 이름을 Rain으로 변경

 

빗방울에 중력부여하기

 

Rain 오브젝트의 inspector 창의 add component 클릭후 Rigidbody 2d 선택

 

충돌효과 부여하기 

 

다시 add component 클릭 후 circle collider 2d 선택

 

이번엔 Ground 오브젝트를 클릭후 add component -> box collider 2d 선택

 

빗방울 파괴

 

project의 script 폴더에 Rain 스크립트 생성 후 실행

 

Start나 Update가 아닌 새로

private void OnCollisionEnter2d(Collision2D collision)

{

}

을 치고 안에 Debug.Log("충돌");을 써서 빗방울이 지면에 닿았을때 출력되는지 확인

 

if(collision .gameObject.name == "Ground")

{

}

충돌한 오브젝트의 이름이 Ground와 같다면 실행되는 조건

 

안에 Destroy(collision.gameObject);  를 씀

충돌한 오브젝트를 제거 하지만 충돌했을때 Ground가 파괴됨 

따라서 Destroy(this.gameObject); 로 고쳐 빗방울이 파괴되도록 고침

 

태그 부여하기 

 

하지만 오브젝트의 이름이 바뀌면 동작을 하지 않으니 태그를 사용하기로 함

Ground 오브젝트를 클릭  inspector창의 이름 밑에 Tag 칸을 클릭

Add tag..  -> +버튼 클릭  후 새로운 태그 이름  'Ground' 명명

 

Ground 오브젝트의 태그를 Ground 태그를 붙임

 

if(collision .gameObject.CompareTag("Ground"))

{

}

로 조건 수정    

 

1-6 랜덤한 빗방울

 

Rain 오브젝트를 Scene 에서 움직여보며 위치값 정보를 수집

x값은 -2.4 에서 2.4 y값은 3에서 5 값으로 책정

 

Rain 스크립트로 이동

 

Start함수에서

float x = Random.Range(-2.4f,2.4f); x라는 변수 생성 

float y = Random.Range(3f,5f); y라는 변수 생성

transform.positon = new Vector3(x,y,0);   괄호안에 생성한 변수를 입력하여 랜덤한 

position 값을 가지도록 함

 

빗방울 사이즈 조절

 

작은,중간,큰 빗방울은 만들기 위해 

int type = Random.Range(1,4);   1에서 3까지 랜덤한 값을 받아오는 변수 생성

 

if (type == 1)

{

else if(type ==2)

{

}

else if(type ==3)

{

}

와 같이 type 값을 조건으로 3가지 조건문을 생성

 

public class 밑에 

float size = 1.0f;  

int score =1;       빗방울 크기와 점수 변수 생성   score는 나중에 점수창을 만들때 사용됨

 

아까 만든 조건문들 안에

size = 0.8f;        (if type==1)

score = 1;

 

size = 1.0f;       (if type==2)

score = 2;

 

size = 1.2f        (if type==3)

score = 3;   

와 같이 빗방울 크기와 배점을 다르게 설정 및

 

조건문 아래  

transform.localScale = new Vector3(size,size,0);

Rain오브젝트의 Scale 값을 재설정하는 코드를 입력

 

빗방울 색을 각각 다르게 설정

 

public class 밑에 SpriteRenderer renderer; 입력 

Start 함수 안에 

renderer = GetCompare<SpriteRenderer>(); 입력

 

조건문들 안에 

renderer.color = new Color(100/255f ,100/255f ,1f ,1f);    (if(type==1))

renderer.color = new Color(130/255f ,130/255f ,1f ,1f);    (if(type==2))

renderer.color = new Color(150/255f ,150/255f ,1f ,1f);    (if(type==3))

빗방울들의 색상을 다르게 입력

 

 

'TIL' 카테고리의 다른 글

2024 08 28 TIL  (7) 2024.08.28
2024 08 27 TIL  (0) 2024.08.27
2024-08-26 TIL  (0) 2024.08.26
2024 08 23 TIL  (0) 2024.08.23
2024 08 22 TIL  (0) 2024.08.22