1. 레이아웃 설정
2. 빌드 세팅 변경
3. 화면 크기 설정
4. 씬 저장
5. 오브젝트 배치
레이어 번호가 클수록 앞에 배치
6. 컨트롤러 스크립트 작성 및 컨트롤할 오브젝트에 부착
방향키 입력 받아서 좌우 이동하기
//좌우 이동
if (Input.GetKeyDown(KeyCode.RightArrow))
{
this.transform.Translate(3, 0, 0);
}
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
this.transform.Translate(-3, 0, 0);
}
아래로 떨어지다가 특정 위치에서 해당 게임 오브젝트 제거
//시간 베이스 이동
float speed = 1f;
float movement = -1 * speed * Time.deltaTime; //방향*속도*시간
this.transform.Translate(0, movement, 0);
//프레임 베이스 이동
//this.transform.Translate(0, -0.1f, 0);
if (this.transform.position.y < -4.1f)
Destroy(this.gameObject); //게임 오브젝트 제거
//Destroy(this); //클래스의 현재 인스턴스 제거 : 컴포넌트 제거
충돌 판정: 충돌을 감지하는 부분
충돌 반응: 충돌을 감지한 다음의 음직임을 정하는 부분
public class ArrowController : MonoBehaviour
{
public float radius;
GameObject player;
// Start is called before the first frame update
void Start()
{
//충돌 했는지 감지할 오브젝트
this.player =GameObject.Find("player");
}
// Update is called once per frame
void Update()
{
//충돌 판정
Vector2 p1 = this.transform.position; //화살표의 중심 좌표
Vector2 p2 = this.player.transform.position; //플레이어의 중심 좌표
float distance = Vector2.Distance(p1, p2); //중심 좌표 간의 거리
//Vector2 dir = p1 - p2;
//float d = dir.magnitude;
//float r1 = 0.5f; //화살표의 반경
//float r2 = 1.0f; //플레이어의 반경
float r = this.radius + this.player.GetComponent<PlayerController>().radius; //r1+r2
//충돌하면 게임 오브젝트 제거
if (distance<r)
{
Destroy(gameObject);
}
}
}
7. 프리팹 사용
①프리팹 생성
②제너레이터 스크립트 작성
1초마다 화살표 오브젝트 생성하고 생성한 오브젝트를 y, z 좌표는 고정이고 x좌표가 랜덤인 위치로 옮긴다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrowGenerator : MonoBehaviour
{
//생성할 프리팹 전달 받아서 넣을 변수
//Inspector 창에서 받을 거니까 public
public GameObject arrowPrefab;
private float delta;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//시간 누적
this.delta += Time.deltaTime; //매 프레임 간격으로 시간 누적
if(this.delta>1) //1초 지남
{
this.delta = 0;
//프리팹 인스턴스 생성
GameObject go = Instantiate(this.arrowPrefab);
//랜덤 x 좌표로 위치 변경
int px = Random.Range(-6, 7);
//생성된 화살 오브젝트의 위치로 사용
go.transform.position = new Vector3(px, 4.5f, 0);
}
}
}
③빈 오브젝트에 스크립트 적용
④스크립트에 프리팹 전달
프리팹 전달 시 Project 창의 프리팹을 전달해야 한다(씬에 있는거 x)
8. UI 만들기
①UI 오브젝트 배치
이미지 사용시 앵커 포인트 설정
앵커 포인트: 화면 크기가 변경되어도 이미지가 같은 위치에 있도록 한다
②감독 스크립트 작성
③빈 오브젝트에 스크립트 적용
'Unity > 2D' 카테고리의 다른 글
Unity2D 타일 사이에 선이 생길 때 해결 방법 (0) | 2023.09.22 |
---|---|
타일맵 (0) | 2023.09.20 |