Contents
접기
728x90
빗방울 랜덤생성
랜덤생성 범위값설정은 아래와 같이 설정
X값( -2.4f ~ +2.4 )
Y값( 3.0f ~ 5.0f )
void Start()
{
//Range(최소값, 최대값)
float x = Random.Range(-2.4f, 2.4f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector3(x, y, 0);
}
📌Rain의 시작 위치를 Random함수를 통해서 랜덤하게 해주고, 그범위를 Range로 설정해준다.
📌랜덤하게 생성된 각각의 값을 실수형 변수 x, y에 담아주고 transform postion의 x,y값에 접근하기 위해 Vector를 사용하여 설정해준다.
다양한 크기의 빗방울 생성
큰빗방울(타입1), 중간사이즈 빗방울(타입2), 작은사이즈 빗방울(타입3)을 생성해보자.
타입을 랜덤 설정 ( 최솟값 1, 최댓값 3 )
int type = Random.Range(1, 4);
📌 정수값을 넣어주면 정수만 추출됨
📌 단, 최댓값은 포함이 되지않는다. 따라서 만약 3을 최대로 나오게 하고 싶다면 4로 설정해야한다.
각각의 사이즈, 색깔, 점수를 세팅
float size = 1.0f;
int score = 1;
사이즈랑 점수는 변수로 빼서 설정해주었다.
SpriteRenderer renderer;
void Start()
{
//Sprite Renderer컴포넌트를 GetComponent를 통해 가져온다
//스크립트와 같은 자리에 있어야함
renderer = GetComponent<SpriteRenderer>();
if(type==1)
{
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
}
}
Color값을 불러오기 위해 GetComponet를 사용한다
if(type==1)
{
size = 0.8f;
score = 1;
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
}
else if (type == 2)
{
size = 1.0f;
score = 2;
renderer.color = new Color(130 / 255f, 130 / 255f, 1f, 1f);
}
else if (type == 3)
{
size = 1.2f;
score = 3;
renderer.color = new Color(150 / 255f, 150 / 255f, 1f, 1f);
}
📌 타입별로 size, score, color를 설정한다.
📌 Color값은 float값이 들어가는데, color값에 150을 넣고 싶다면 150/255f 값을 넣어야한다.
전체코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rain : MonoBehaviour
{
float size = 1.0f;
int score = 1;
//색깔설정은 SpriteRender에 있어서 이를 가져오기 위함
SpriteRenderer renderer;
// Start is called before the first frame update
void Start()
{
//Sprite Renderer컴포넌트를 GetComponent를 통해 가져온다
//스크립트와 같은 자리에 있어야함
renderer = GetComponent<SpriteRenderer>();
float x = Random.Range(-2.4f, 2.4f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector3(x, y, 0);
//정수값을 넣어주면 정수만 추출됨(최댓값은 포함이 되지않음)
int type = Random.Range(1, 4);
if(type==1)
{
size = 0.8f;
score = 1;
//Color값은 float값이 들어감
//150을 넣고 싶다면 150/255f 값을 넣어야함
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
}
else if (type == 2)
{
size = 1.0f;
score = 2;
renderer.color = new Color(130 / 255f, 130 / 255f, 1f, 1f);
}
else if (type == 3)
{
size = 1.2f;
score = 3;
renderer.color = new Color(150 / 255f, 150 / 255f, 1f, 1f);
}
transform.localScale = new Vector3(size, size, 0);
}
// Update is called once per frame
void Update()
{
}
//충돌이벤트 발생시
private void OnCollisionEnter2D(Collision2D collision)
{
//collision에는 충돌하는 물체의 정보가 들어있다.
//즉, Rain이 Ground에 부딪히면 부딪힌 Ground 관련된 게임 오브젝트 정보들이 들어있다
if(collision.gameObject.CompareTag("Ground"))
{
//gameObject는 Rain스크립트가 붙어있는 오브젝트(Rain)자체를 가리킴
Destroy(gameObject);
}
}
}
아래와 같이 각각 실행마다 다른 랜덤한 위치에서 랜덤한 크기로, 색이 다른 빗방울이 생성되는 것을 확인할 수 있다.
728x90
'GameDevelop > Unity기초쌓기' 카테고리의 다른 글
[Unity] UnassignedReferenceException오류 (0) | 2025.03.28 |
---|---|
[Unity] 빗방울 반복생성, 프리팹(Prefab) (0) | 2025.03.28 |
[Unity] Tag생성 (0) | 2025.03.27 |
[Unity] 중력,충돌로 빗방울구현 Rigidbody,Collider (0) | 2025.03.27 |
[Unity] 마우스 왼쪽 클릭시 캐릭터 방향전환 renderer.flipX, GetMouseButtonDown (0) | 2025.03.25 |