캐릭터 움직이기
x축 이동
transform.position += Vector3.right
- Vetor3.right → Vector3(1, 0, 0); 사용하기 편하게 유니티에서 제공하는 변수!
- Vetor3 (x,y,z)→ x,y,z 의 3 차원 값
- 뒤에 * 를 붙여 속도 조절 가능
void Update()
{
// 매 프레임마다 게임 오브젝트를 오른쪽으로 1 단위씩 이동
transform.position += Vector3.right;
}
캐릭터 속도 일정하게 맞추기
Application.targetFrameRate
- 기기 성능과 관계없이 1초에 60번만 호출/계산하도록 고정!
void Start()
{
Application.targetFrameRate = 60;
}
벽에 충돌시 반대 방향으로 가게하기
float direction = 0.05f;
void Update()
{
if (transform.position.x > 2.6f)
{
direction = -0.05f;
}
if (transform.position.x < -2.6f)
{
direction = 0.05f;
}
transform.position += Vector3.right * direction;
}
벽에 충돌시 캐릭터 이미지 좌우반전 시키기
renderer.flipX = true (or false)
SpriteRenderer renderer; // 컴포넌트를 담아줄 변수(박스)를 만들고
void Start()
{
renderer= GetComponent<SpriteRenderer>(); // 시작할 때 넣어준다.
}
void Update()
{
(조건)
renderer.flipX = true;(or false)
}
마우스 클릭시 방향 바꾸기
Input.GetMouseButtonDown
- ! 는 불값을 반전시킴 (true(체크) -> false(체크해제) 로 바꿈)
void Update()
{
if (Input.GetMouseButtonDown(0))
{
direction *= -1;
renderer.flipX = !renderer.flipX;
}
}
빗방울 만들기
땅에 충돌시 없어지게 하기 (충돌 세팅)
Destroy(gameObject)
- 충돌의 기본 조건은 둘 다 Collider 가 있어야 한다.
- 둘 중 하나는 Rigidbody가 있어야 한다.▶
- CompareTag는 Unity에서 게임 오브젝트가 특정 태그를 가지고 있는지를 확인하는 메서드이다. 충돌한 게임 오브젝트가 ( )태그를 가지고 있는지 확인한다. 이 메서드는 성능이 최적화되어 있어 gameObject.tag == "Ground"보다 더 빠르고 효율적이다.
void Update()
{
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
Destroy(gameObject);
}
}
랜덤한 위치에 생성되게 하기
void Start()
{
float x = Random.Range(최소값, 최대값);
float y = Random.Range(최소값, 최대값);
transform.position = new Vector3(x, y, z);
}
빗방울 복제하기
- GameManager 오브젝트, 스크립트 생성
- 빗방울을 Prefabs로 생성
public GameObject rain;
3. GameManager 스크립트 rain에 빗방울 Prefabs를 끌어다놓기.
void Start()
{
InvokeRepeating("MakeRain", 0, 1f); //(복제할것, 시작시간, 시간간격)
}
void Update()
{
}
void MakeRain()
{
Instantiate(rain);
}
4. instantiate 복제한다.
점수 계산 - UI 이용
UI는 Canvas라는 도화지 위에 그려지고, 카메라 위치와는 관계가 없이 보여집니다.
→ 버튼 / 텍스트 / 순위를 보여줄 때에만 써줍니다. 🙂
싱글톤화
public static GameManager Instance;
public void Awake()
{
Instance = this;
}
void Start()
{
}
캐릭터와 충돌시 점수 올라가게 하기
int totalScore = 0;
public void AddScore(int score)
{
totalScore += score;
}
void Update()
{
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
GameManager.Instance.AddScore(score);
}
}
}
UI Text 받기
using UnityEngine.UI;
public Text totalScoreTxt;
점수가 오를 때마다 Text 바꿔주기
public void AddScore(int score)
{
totalScore += score;
totalScoreTxt.text = totalScore.ToString();
}
'내일배움캠프 Unity 9기 > TIL' 카테고리의 다른 글
[Unity/TIL] - 네이밍규칙(코딩스탠다드) (0) | 2025.04.15 |
---|---|
[Unity/TIL] - C# 기본문법 (0) | 2025.04.14 |
[Unity/TIL] - 레벨에 따라 게임 난이도 조정하기 (0) | 2025.04.11 |
[Unity/TIL] - 타임바 만들기 (0) | 2025.04.10 |
[Unity/TIL] - 씬 이동 버튼 만들기 / 확률 설정 / 생성 위치 지정 / 마우스 포인터 설정 / 함수호출 딜레이 (0) | 2025.04.08 |