1. 유니티 개념 설명
- 유니티 의 주요 기능과 사용법 설명
- 유니티 는 게임 개발을 위한 통합 개발 환경입니다.
- 주요 기능:
- 프로젝트 관리: 새로운 프로젝트 생성, 프로젝트 파일 구성 및 관리
- 씬(Scene) 관리: 게임의 각 장면과 화면을 구성하는 요소
- 에셋(Asset) 관리: 게임에 필요한 리소스(이미지, 사운드, 모델 등)를 관리
- 컴파일 및 빌드: 스크립트 코드를 컴파일하여 실행 가능한 게임으로 빌드
- 디버깅: 코드 실행 중에 오류를 찾고 수정
- 에디터 확장 기능: 유니티 에디터를 사용자의 요구에 맞게 확장할 수 있는 기능 제공
- 에셋, 씬, 게임 오브젝트의 개념과 관계 설명
- 에셋(Asset):
- 게임에 필요한 모든 리소스(이미지, 사운드, 모델, 코드 등)를 의미
- 프로젝트의 에셋 폴더에 저장되며, 유니티에서 사용 가능한 형식으로 가져와서 게임에 활용
- 씬(Scene):
- 게임의 각 장면 또는 화면을 의미
- 유니티에서 게임은 하나 이상의 씬으로 구성되며, 각 씬은 게임의 특정 부분을 담당
- 예를 들어, 메뉴 씬, 게임 플레이 씬, 엔딩 씬 등으로 구성
- 게임 오브젝트(GameObject):
- 씬에 배치되는 모든 요소를 의미
- 게임 오브젝트는 에셋을 이용하여 씬에 생성되며, 게임의 동작과 상호작용을 담당
- 예를 들어, 캐릭터, NPC, 아이템, 장애물 등이 게임 오브젝트
- 게임 오브젝트는 계층 구조로 구성되어 부모-자식 관계를 가지며, 이를 통해 그룹화하고 조작
2. 냅다 핑퐁 만들기!
아래 검은색 화면이 플레이 화면
왼쪽이 플레이어1, 점수판 파란색
오른쪽이 플레이어 2 점수판 빨간색
화면에는 안나오지만 화면 밖으로 공이 안나가도록 카메라 밖에 테두리가 둘러져 있으며 Box Collider 2D로 충돌할 수 있는 벽을 만듦.
그리고 공에는 이 문법을 넣으면 되고!
(1) 시작, 랜덤위치 발사, 상대방 골라인 닿았을 시 리셋하는 코딩을 적어두고
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball : MonoBehaviour
{
public float speed;
public Rigidbody2D rigidbody;
void Start()
{
rigidbody = GetComponent<Rigidbody2D>();
Launch();
}
private void Launch()
{
float x = Random.Range(0, 2) == 0 ? -1 : 1;
float y = Random.Range(0, 2) == 0 ? -1 : 1;
rigidbody.velocity = new Vector2(x* speed, y* speed);
}
public void Reset()
{
rigidbody.velocity = Vector2.zero;
transform.position = Vector2.zero;
Launch();
}}
(2) 유니티에서 볼 세팅
- Box collider 2D 설정
- RigidBody 2D 를 설정
- mass는 1는 1로 설정, Freeze Rotation Z는 체크해서 z로 움직이지 않게 하고
- 바운스 세팅에서 bounciness를 1로 설정하면 부딪히는 각도와 동일하게 튕겨져 나옴
- 볼 스피드는 5정도?
유니티 컴포넌트 이해
- 유니티의 컴포넌트 방식
- 게임 오브젝트에 부착되는 독립적인 기능 모듈
- 각 컴포넌트는 특정한 작업을 수행하거나 기능을 제공하는 역할
- 컴포넌트들을 게임 오브젝트에 추가하고 구성함으로써 게임의 동작과 특징을 결정
- 기본 컴포넌트 예시
- Transform: 게임 오브젝트의 위치, 회전, 크기 등을 조정하는 데 사용됩니다.
- Rigidbody: 물리적인 효과를 게임 오브젝트에 적용할 수 있게 해줍니다.
- Collider: 충돌 감지를 처리하기 위해 사용되는 컴포넌트입니다.
- SpriteRenderer: 2D 그래픽을 표시하는 데 사용됩니다.
- AudioSource: 사운드를 재생하기 위해 사용되는 컴포넌트입니다.
- 사용자가 필요에 따라 컴포넌트를 직접 작성하고 추가할 수도 있습니다. 이를 통해 게임의 특정한 동작이나 기능을 개발자가 원하는 대로 커스터마이즈