Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 2022년
- 2월
- 유니티
- 2023년
- 다이나믹 프로그래밍
- 백준
- 2024년
- 개인 프로젝트 - 런앤건
- 5월
- 유니티 심화과정
- 게임 엔진 공부
- 코딩 테스트
- 코딩 기초 트레이닝
- 2025년
- 골드메탈
- 기초
- todolist
- 4월
- 개인 프로젝트
- 단계별로 풀어보기
- 6월
- 프로그래머스
- 1월
- 3월
- 자료 구조
- C/C++
- 10월
- c++
- 수학
- 입문
Archives
- Today
- Total
기록 보관소
[Unity/유니티] 기초-물리 퍼즐게임: 물리기반 퍼즐 밑바탕 만들기[B54] 본문
개요
유니티 입문과 독학을 위해서 아래 링크의 골드메탈님의 영상들을 보며 진행 상황 사진 또는 캡처를 올리고 배웠던 점을 요약해서 적는다.
현재는 영상들을 보고 따라하고 배우는 것에 집중할 것이며, 영상을 모두 보고 따라한 후에는 개인 프로젝트를 설계하고 직접 만드는 것이 목표다.
https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2
유니티 강좌 기초 채널 Basic
유니티 개발을 처음 시작하시는 입문자 분들을 위한 기초 채널. [ 프로젝트 ] B00 ~ B12 (BE1) : 유니티 필수 기초 B13 ~ B19 (BE2) : 2D 플랫포머 B20 ~ B26 (BE3) : 2D 탑다운 대화형 RPG B27 ~ B37 (BE4) : 2D 종스크롤
www.youtube.com
물리 퍼즐게임: 물리기반 퍼즐 밑바탕 만들기[B54]
1. 모바일 환경 설정






2. 에셋 불러오기

- 이번 프로젝트 에셋은 에셋 스토어가 아닌 이곳(골드메탈 홈페이지)에서 다운 받을 수 있다.
Casual Physics Puzzle Assets Pack
Unity Package Ver. Zip Ver.
www.goldmetal.co.kr



3. 배경 만들기










4. 기본 동글 로직





//Dongle 스크립트 파일
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Dongle : MonoBehaviour {
void Update() {
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
float leftBorder = -4.2f + transform.localScale.x / 2f; //좌측 벽 경계 설정
float rightBorder = 4.2f - transform.localScale.x / 2f; //우측 벽 경계 설정
if (mousePos.x < leftBorder) { //벽에 x축 접근 제한
mousePos.x = leftBorder;
}
else if (mousePos.x > rightBorder) {
mousePos.x = rightBorder;
}
mousePos.y = 8; //Y축 고정해서 경계선 밑으로 내려가지 않도록 설정
mousePos.z = 0; //Z축 고정해서 맵 밖으로 나가지 않도록 설정
transform.position = Vector3.Lerp(transform.position, mousePos, 0.2f);
}
}
- 좌측 우측 벽 위치에서 오브젝트의 Scale의 반지름만큼 더하거나 빼서 그 이상 이동하지 못하도록 해서 마우스가 벽을 넘어서 이동해도 그 이상 x축을 이동할 수 없도록 한 것이다.
- Vector3 Camera.ScreenToWorldPoint(Vector3 position) : 스크린 좌표를 월드로 변환.
- Vector3.Lerp(Vector3 a, Vector3 b, float t) : 현재 위치(a)에서 목표 위치(b)로 부드럽게 이동하는 함수. t값은 감도를 설정하며 0~1까지 설정할 수 있다.


5. 끌어다 놓기
//Dongle 스크립트 파일
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Dongle : MonoBehaviour {
public bool isDrag;
Rigidbody2D rigid;
void Awake() {
rigid = GetComponent<Rigidbody2D>();
}
void Update() {
if (isDrag) {
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
float leftBorder = -4.2f + transform.localScale.x / 2f; //좌측 벽 경계 설정
float rightBorder = 4.2f - transform.localScale.x / 2f; //우측 벽 경계 설정
if (mousePos.x < leftBorder) { //벽에 x축 접근 제한
mousePos.x = leftBorder;
}
else if (mousePos.x > rightBorder) {
mousePos.x = rightBorder;
}
mousePos.y = 8; //Y축 고정해서 경계선 밑으로 내려가지 않도록 설정
mousePos.z = 0; //Z축 고정해서 맵 밖으로 나가지 않도록 설정
transform.position = Vector3.Lerp(transform.position, mousePos, 0.2f);
}
}
public void Drag() {
isDrag = true;
}
public void Drop() {
isDrag = false;
rigid.simulated = true;
}
}
- 동글을 끌어다 놓기위해서 isDrag 변수와 Drag(), Drop()함수를 만들었다. 손을 떼면 동글의 앞에서 비활성화했던 Rigidbody의 simulated가 true로 변경되면서 떨어지게 될 것이다.


- Event Trigger : 각종 액션들에 대한 이벤트 관리 컴포넌트
- 여기서 이제 앞에서 만들었던 Drag(), Drop()함수를 이용할 것이다.




- 기본 로직이 완성되었으니 프리펩으로 만들기 위해서 아래 설정들을 한다.


'유니티 프로젝트 > 물리 퍼즐게임' 카테고리의 다른 글
[Unity/유니티] 기초-물리 퍼즐게임: 채널링이 포함된 사운드 시스템[B59] (0) | 2022.04.24 |
---|---|
[Unity/유니티] 기초-물리 퍼즐게임: 게임 오버 구현하기[B58] (0) | 2022.04.23 |
[Unity/유니티] 기초-물리 퍼즐게임: 멋진 이펙트 만들기[B57] (0) | 2022.04.22 |
[Unity/유니티] 기초-물리 퍼즐게임: 물리 이벤트로 동글 합치기[B56] (0) | 2022.04.17 |
[Unity/유니티] 기초-물리 퍼즐게임: 프리펩으로 다양한 동글 생성하기[B55] (0) | 2022.04.16 |