https://learn.unity.com/project/keurieiteo-kiteu-rpg

크리에이터 키트 rpg (2d)

안타깝게도, 최신버전 유니티랑은 호환은 안됨. 2020.03 버전 기반의 튜토임


2022 버전 2d 에선 돌아감


주의점
그냥 scene 폴더가 아니라 
Creator kit - RPG 속 scene 폴더의 SampleScene 을 눌러야 켜짐


+

 

 

window - 2d - tile palette 

 

 

Tilemaps 프리팹에선 4단계 레이어를 구분함

Background

Midground

Fences

Foreground

 

땅을 칠할 땐, Background 를 선택 후 칠할 것

 

+

 

 

집 바닥만 Background

나머지 옆벽, 벽, 창문 모두 Midground 로 칠하기

 

아랫문은 나중에 따로하기

지붕도 나중에 따로하기

 

+

 

 

prefabs 폴더 안에서 HouseRoof 를 넣음

단축키 T 크기조절, ctrl 로 그리드에 맞춰 크기 늘림

 

+

 

 


HouseRoof 의 Order in Layer 1000 으로 상승

Box Collider 2d 컴포 넣기

Edie Collider 로 상하좌우 피격박스 조절

Is Trigger 체크함

Fading Sprite 컴포 넣기
이 건 콜라이더가 트리거 되면, 스프라이트를 페이트 시키는 효과임


+

 

HouseOpenDoor 프리팹 넣기

 

+

 

더 꾸미기

 

 

 

오솔길 은 Midground

울타리 레이어는 Fences

 

+

 

울타리나 암역엔

tilemap collider 2d 
가 적용중이다
png 투명색 빼고 타일맵 그대로 콜라이더가 세세히 적용됨

 

+

 

맵 우클 - environment - add animated tree1 here

해서 나무 추가

 

Decorations > Add Bush0 Here

해서 덤불 추가

 

 

 

덤불은 ctrl d 로 복제후 오른쪽

Sprite Renderer 콤포넨트의 Sprite 를 변경해서 다른 오브젝트로 만들 수 있다

 

 

Art - Sprites - Environment - Cloud 선택

해서 구름 그림자추가

 

구름의 레이어는 2000 으로 상승. 

 

+

 

 

마우스 우클

add npc here 프리팹으로 npc 생성

 

 

인스펙터 ㅡ Animator 
오른위 동글 버튼
Archer - Override 이런거 선택하면  idle 애니메이션 변경가능

 

+

 

대화 시스템 만들기

 

 

 

위는 이렇게 분기 만든다는 설명

 

 

 

Conversation Script 컴포넌트 + 버튼  누른 후 ID 에 1.0 입력

Text 에 Greetings, traveller! 입력

 


같은 방식으로
npc에게 다음의 대화분기를 만든다
1.1: Why thank you! Please will you get me an apple?
1.2: Indeed it is.

 

+

 

 

1.0  Greetings, traveller 를 edit 후
Branches 필드에서 목록 하단의 + 버튼을 클릭

 드롭다운 ID 메뉴에서 1.1을 선택

Hello dapper archer! 라는 플레이어의 첫 대화 선택지 추가

Update를 클릭


같은방식으로
두번째 응답 
The weather is fine 를 

NPC Script Item 1.2에 추가

 

+

 

 

참고로 대화 형식은 다량의 스크립트로 되어있어

이 티스토리 글에선 다루지 않겠음

 

+

 

 

npc에게 퀘스트 추가

왼위 하이어라키 창에서 오브젝트 생성 Create Empty
Quest 로 이름 변경

Add Component , Quest (Script)

Title 에 Apple Quest

Desc 에 Fetch an apple for the archer

 

+

 



Quest 게임 오브젝트 선택 후 
Add Component 버튼을 클릭합니다. Conversation Script 

ID: 1.1.1
Text: Please, fetch me an apple.

Quest 게임 오브젝트 선택 된 상태에서 또
Add Component 버튼을 클릭합니다. Conversation Script 

ID: 1.1.2
Text: Thank you for the tasty apple.

 

 

각각 이렇게 드래그

 

+

 

인벤에 아이템 생성해주는 맵 오브젝트 생성

 

 

땅에서 우클
Gameplay Prefabs > Add InventoryItem Here

Golden Apple로 명명

Inventory Item 스크립트 컴포넌트

Count 를 3으로 변경

이제 이 아이템을 집으면 플레이어 캐릭터 인벤토리에 황금 사과 3개가 생성됨

 


+

 

아이템이 있을 시, 퀘스트 활성화

 

퀘스트에 필요 아이템 설정

 

 

왼위 하이어라키 계층 구조에서
Quest 오브젝트 선택

인스펙터 창에서 
Enable on Quest Start 섹션
Size 1 로 설정
Element 0 에 골든 애플 드래그

Required Items 에서도 1 입력후
Element 0 펼친 후
Item 에 골드 애플을 드래그

 

+

 

 

npc와 퀘스트 연결하기

 

 


하이어 라키 창에서 npc 오브젝트 선택

Conversation Script 컴포넌트를 찾습니다

Conversation Script Item 1.1('Why thank you! Please will you get me an apple?')
를 Edit 눌러서 연다


하이어 라키 창에서 Quest 오브젝트를  
 Quest (Optional) 필드로 드래그

update 클릭

 

 

+

 

퀘 완료 보상 만들기

 

npc 근처에서 땅 우클릭

Gameplay Prefabs > Add InventoryItem Here

 


기본 스프라이트는 황금사과지만
인스펙터에서 Inventory Item 컴포넌트
스프라이트를 Chicken 으로 변경

인스펙터에서 Animator 컴포넌트의 헤더에 있는 체크박스를 활성화
이러면 닭의 움직임이 추가됨

 Rename 해서 Chicken 으로 변경

하이어라키 창에서 Quest 선택, Reward Items 섹션
Size 파라메터 1로 설정

 


 Element 0이 새로 나옴
Chicken 게임 오브젝트를 Element 0 로 드래그

왼위 하이어라키 창에서  Chicken 게임 오브젝트를 선택
오른쪽 인스펙터에서 Chicken 게임 오브젝트 헤더의 체크박스를 비활성화

그러면 Chicken 게임 오브젝트가 비활성화되고 보상으로 주어지기 전까지 

플레이어가 해당 오브젝트를 수집할 수 없습니다

 

+

 

 ㅡㅇㅡ    여기까지했는데 치킨 헤더 비활성화 해서 그런지 치킨 안나옴

 

+

 

이번 튜토는  막하니까 그냥 넘어가야 겠다

반응형
Posted by 이름이 익명
:

 

작품 재미있게 만드는 키워드 : 

시각 청각 마음 공감 정보 정성 발견 장난

 

+

 

3d primitive figure vfx texture

 

3d 도형 기반 투명 오브젝트에다 procedural texture 씌우는 게 

스킬 vfx 이펙트 기초다

 

 

프리미티브 도형은 기본 내장되어 있고,

vfx 텍스쳐는 유튜브 검색하면 찾기 쉬움

 

 

+

 

 

나뭇잎도 다 텍스쳐 (pbr) 로 처리한다

 

 

+

 

 

유니티는 C# 언어도 쓰고 비쥬얼스튜디오도 쓰니까

 

거진 마이크로 소프트 계통이라 보면 된다

 

 

Microsoft 마소  계통 

ㅇ Windows 운영체제

ㅇ Xbox 콘솔 게임플랫폼

ㅇ 오피스 : 엑셀, 파워포인트

ㅇ C#언어

ㅇ Visual Studio 

ㅇ Bing 서치엔진

ㅇ 365 Copilot AI챗봇

ㅇ Azure 클라우드

ㅇ Onedrive 클라우드

ㅇ Github git 파일저장 및 공유 

ㅇ LinkedIn 비즈니스 인사

 

 

본사 위치 미국 워싱턴 레드먼드

주식은 나스닥

 

 

 

이를 다시 정리해서 말하자면,

 

언어는 미국식 영어를 쓰며,

내 게임 기획 자료를 엑셀로 저장하고, 

운영체제는 리눅스 안쓰고 윈도우즈 쓰고

 

 

이러면 코파일럿ai 하고 협력하기 좋은 환경이 된다

 

 

+

 

인디게임 개발시 파일 및 버전 관리는 git 쓰라 함

 

+

 

첫~5번째 작품은 초딩수준으로 결과물이 나오니 포기할 걸 감안할 것

 

+

 

unity scene transition

도 고려해봐라

 

https://www.youtube.com/watch?v=hF1mkGENOS4

 

 

참고로

 

발더스3 같은 경우

트랜지션 없음

트랜지션 없는대신, 로딩이나 컷신이 나옴

씬1 -> 로딩창 이나 컷신 -> 씬2

트랜지션 없이 그냥 화면 전환됨

 

 

+

 

 

 

 

ui 만들 때 참고하면 좋을

공식 아이콘 참고

 

https://fonts.google.com/icons

 

 

 

 

+

 

유니티 잡팁 추. grid layout group 

콤포넌트는 ui 인벤 만들 때 쓰인다.

 

 

+

 

메쉬콜라이더는 연산량 많아서 게임 느려짐

convex는 메쉬를 단순화 시키는 것이다.

 

 

콜라이더는 캡슐, 박스 콜라이더가 더 최적화되어서 좋음.

 

+

 

 

 

스킬 선택이나 장비 선택시. toggle 

이라는 키워드를 씀. 하나를 선택하면 나머지는 선택 해제하는 것

 

자세한건 toggle 튜토 검색 ㄱ

 

+

 

오브젝트가 플레이어를 가리는 문제

(플레이어와 메인카메라 사이 위치한 오브젝트를 투명하게 하기)

를 해결하기 위해선 다음과 키워드로 검색하면 됨

 

orbit camera
clipping object , 
Dither Transparency

 

+

 

툰셰이더 그림자 문제 관련 검색 키워드 : 

Fix shadow flickering

shadow bias
z fighting
depth fighting

 

 

 

Animator : 관절 움직임 애니메이션을 관리하고 제어하는 시스템
Baking : 조명이나 다른 효과를 미리 계산하여 성능을 최적화하는 과정
Build : 게임을 실행 파일로 컴파일하여 배포 가능한 형태로 만드는 과정
Hierarchy : 현재 씬에 있는 모든 게임 오브젝트의 계층 구조를 보여주는 레이어 패널
Lightmapping : 정적 조명을 사전 계산하여 성능을 향상시키는 기술
LOD (Level of Detail) : 멀리 있는 사물을 로우 폴리로 표현해 성능 향상하는 기법
NavMesh : AI가 경로를 찾도록 하는 네비게이션 메쉬
Prefab : 자주 사용되는 게임 오브젝트를 모듈처럼 만들어 재사용할 수 있는 기능
Scene : 게임의 환경을 나타내는 공간

 

+

 

 

Light mapping
텍스쳐에 그림자와 광원을 베이크 해버리는 기법
모바일처럼 성능 낮은 하드웨어를 위한 기법
실시간 빛에 상호작용 하는 게 아님

 

+

 

ui 만들 때 

아이콘과 그림 딱 붙이게 하는법

 

https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=104886

 

TMP 짜증나서 쓴 글자 앞에 이미지 오게 하는법 강의 - 인디 게임 개발 마이너 갤러리

기존 텍스트는 이미지와 쉽사리 연결할 수 없음. 그래서 텍스트가 길어지면 이미지가 텍스트랑 어쩔 수 없이 겹치게 됨.그래서 해결하고자 검색해보면 거의 다TMP의 Sprite Asset을 이용하라는 말이

gall.dcinside.com

 

+

 

turn tactcis rpg 미드폴리 아이소메트릭 3d 게임을 유니티로 만든다 치자. 그러면 어떤 거부터 만들어야 하지? 예를 들면 테스트 스테이지부터 만들어라. 장비창, 스킬창은 제일 나중에 만들어라. 이런식으로 알려줘. 세세하게 알려줘. 쉽게 알려줘. 빼곡히 다 전부 알려줘.

 

코파일럿 ai 챗봇에게 질문 프롬프트

 

그에 대한 답 : 

 

더보기

1. 프로젝트 초기 설정

  1. Unity 프로젝트 생성:
    • Unity Hub에서 새로운 3D 프로젝트를 생성합니다.
    • 프로젝트 이름과 저장 위치를 설정합니다.
  2. 기본 폴더 구조 설정:
    • Assets 폴더 아래에 Scripts, Prefabs, Materials, Scenes, Models, Textures, Animations, UI 등의 하위 폴더를 만듭니다.

2. 기본 환경 설정

  1. 기본 씬(Scene) 설정:
    • 새로운 씬을 만들고 저장합니다 (예: MainScene).
    • 기본적인 지형(바닥, 등)을 배치합니다.
  2. 카메라 설정:
    • 아이소메트릭 카메라 각도를 설정합니다.
    • 카메라의 위치와 각도를 고정합니다.

3. 플레이어와 NPC 설정

  1. 플레이어 NPC 모델링:
    • 기본 플레이어와 캐릭터 모델을 준비합니다 (3D 모델링 툴을 사용하거나 Unity Asset Store에서 다운로드).
  2. 애니메이션 추가:
    • 걷기, 공격, 피격 등의 기본 애니메이션을 추가합니다.
    • Animator Controller를 설정합니다.

4. 전투 시스템 구현

  1. 매니저(Turn Manager) 작성:
    • 기반 시스템을 관리하는 TurnManager 스크립트를 작성합니다.
    • 캐릭터의 턴을 관리하고, 행동 순서를 정합니다.
  2. 캐릭터 행동 관리:
    • PlayerController EnemyController 스크립트를 작성하여 캐릭터의 이동, 공격 등을 구현합니다.
  3. 경로 찾기 이동 시스템:
    • NavMesh NavMesh Agent를 설정하여 캐릭터가 경로를 찾고 이동할 있도록 합니다.

5. UI 요소 추가

  1. 기본 UI 구성:
    • 체력 바, 표시 등의 기본 UI 요소를 추가합니다.
    • CanvasEventSystem설정합니다.
  2. 인벤토리 스킬 :
    • 인벤토리 UI와 스킬 UI를 디자인합니다.
    • InventoryManagerSkillManager 스크립트를 작성하여 아이템 스킬을 관리합니다.

6. 스테이지 디자인 추가 기능 구현

  1. 테스트 스테이지 생성:
    • 간단한 테스트 스테이지를 생성하고, 배치 난이도를 설정합니다.
  2. 스테이지 디자인:
    • 15개의 스테이지를 각각 다른 난이도로 디자인합니다.
    • 스테이지에 적과 장애물 등을 배치합니다.
  3. 퀘스트 이벤트 시스템:
    • 퀘스트 UI를 디자인하고, QuestManager 스크립트를 작성하여 퀘스트를 추가하고 관리합니다.

7. 사운드 최적화

  1. 사운드 추가:
    • 배경 음악과 효과음을 추가합니다.
    • AudioManager 스크립트를 작성하여 사운드 재생을 관리합니다.
  2. 게임 최적화:
    • 유니티 프로파일러를 사용하여 성능 병목 지점을 찾아 최적화합니다.
    • 메모리 관리 불필요한 리소스를 제거합니다.

8. 테스트 출시

  1. 종합 테스트:
    • 모든 기능을 종합적으로 테스트하여 버그를 수정합니다.
    • 안정성을 확인합니다.
  2. 플레이 테스트:
    • 플레이어 피드백을 수집하고, 이를 반영하여 게임을 조정합니다.
  3. 빌드 배포 준비:
    • 다양한 플랫폼에 맞춰 빌드 설정을 합니다.
    • 최종 빌드를 테스트하고 오류를 수정합니다.
  4. 출시 홍보:
    • 게임을 출시하고, 마케팅과 홍보 계획을 수립합니다.

 

+

 

게임 쉽게 재밌게 만드는 법

 

ㅇ 캐릭 등장은 비밀스럽게 등장
ㅇ 엔딩은 반전 엔딩

ㅇ 전투는 주사위 확률게임

 

ㅇ 한번 물리친 적 리스폰 안됨

ㅇ 한번 클리어한 스테이지 재방문 불가능

 

+

 

 

unity 6 업데이트 됨
ui builder (ui toolkit) 기능으로
새롭게 gui 를 사용해 인게임 ui 를 제작할 수 있게 되었다 함

에셋 하나 안 사도 되는 셈

 

 

CustomUVChecker_byValle_1K

 

uv 체커 써서 모델링 잘 되었나

텍스쳐 잘 입혀지나 확인 ㄱ

반응형
Posted by 이름이 익명
:

https://www.youtube.com/@UnityKoreaHi
유니티 코리아 유튜브 강좌

https://www.youtube.com/@goldmetal/playlists
골드메탈 유튜브 재생목록

 


https://www.youtube.com/watch?v=_1pz_ohupPs
Brackeys 유튜브

https://www.youtube.com/watch?v=eXsSsexoVGc
Greg Dev Stuff 유튜브

https://www.youtube.com/watch?v=0QU0yV0CYT4
Code Monkey 유튜브



https://docs.unity3d.com/Manual/UnityManual.html
unity documentation
유니티 글로 적힌 가이드 메뉴얼 링크

https://learn.unity.com/tutorials
유니티 한국어 더 많은 강좌 링크

반응형
Posted by 이름이 익명
:

 

선 결론

 

580만원 들여서 사길 잘 했다 라는 생각이 듦

앞으로 5년주기로 최신식 고사양 컴퓨터 구매 희망 있음

 

 


 

 

최저시급으로 쓸 거 다 쓰면서 저축하면

1달에 40만원 저축 가능

1년에 480만원 저축 가능

5년에 2400만원 저축 가능

충분히 5년 주기로 고사양 컴 구매해도 남음

 

(백수 활동만 안하면...)

 

 

택배는 박스로 2중포장해서 줌

박스 자체가 딱딱하고 완충재도 들어있어서 깨져서 오진 않았음

 

 

 

데탑 아니고 노트북 왜삿노 :

 

이사갈 일 생기는데 그 때 좁은 공간에서도 사용 가능

요즘 데탑 글카 크기 너무 커서 어디 놓을 데가 없

원룸 책상도 내맘대로 못 바꾸면 데탑은 설치가 불가능함

 

 

 

그림 ai sdxl 기준

예전 똥컴 gtx 1070 -> rtx 4090laptop asus 놋북 으로 업그레이드 하니

40초 걸리던게 5초 걸림

 

 

 

시피유도 i9 시리즈 쓰니까

폴더열기 프로그램 실행하기 인터넷까지도 다 빨라짐

내 손이 컴퓨터를 못 따라가는 속도

 

 

 

즉, 내가 빨리 할수록 그만큼 내게 보상이 되는 업무 구조로 바뀜

(예전엔 내가 아무리 빨라도 로딩을 기다려야해서 답답했지)

 

 

 

노트북이라고 해도

랜선, 외장하드, 마우스, 키보드 , 노트북 거치대, 키스킨 등 여러 부속품들이 필요함

 

노트북 이거 딱 하나만으론 일단 키패드와 키보드부터가 너무 불편함

 

 

고사양 노트북은 재고가 많이 없고 안 대중적임

그래서 에이서스 고사양 노트북은 전용 키스킨(키보드 껍질) 없더라?

그래서 평평한 공용 키스킨 위에 엎음

 

노트북 자판 구조가 우덜식이라 그거 적응안되는데

불투명 키스킨까지 위에 까니까 잘 안보여서 불 ㅡ 편

 

 

usb 포트가 2개뿐임

usb 3.0+ 달린 외부 포트허브를 따로 구매해야 해서 불 ㅡ 편 

키보드 외장하드 마우스  3개를 한번에 하려면 외부포트허브 필수

 

 

 

유선랜선 꽂으면 더 빨라서 좋긴한데 없어도 됨

노트북에서 wifi 잡을 수 있음

 

 

노트북에 카메라, 녹음기가 있음

 

 

1920x1080 모니터는 너무 해상도가 낮아 큰 글자 크기가 강요되었음

각종 프로그램 열면 인터페이스 칸이 불편할정도였음

2560x1440 으로 바꾸니 인터페이스 널널해져서 좋음

 

 

전체 화면모드는 안함.

창모드 분할을 자주 함

왼쪽엔 각종 프로그램, 오른쪽 조그맣게는 메모장을 동시에 켜둬서 작업

 

 

 

내장 마이크 달려서 그런지 스테레오 믹스 녹음이 없더라

아무리 만져도 안나타남;;

 

 

 

포토샵 한글버전 깔리길래 지우고 영어버전으로 다시 깔고..

obs 와 avidemux mp4로 설정하고..

이것저것 다 설치하느라 이틀 넘게 걸림

 

 

 

소음은 두가지 상태가 있음

무소음 : 평상시, 인터넷 서핑, 유튜브, 메모, 코딩

보통의 소음 : 게임 플레이 도중, 멀티태스킹

쎈 바람 소리가 남 : 렌더링, 다운로드 완료시, 게임 다운로드시, 

 

 

소음 커질땐 

귀에 들리기 적합한데 그나마 최저로 낮춘 볼륨 (5)이 묻혀서 안 들리는 정도임.

생각보다 소음이 그렇게 크진 않음. 

컴퓨터가 돌아가는 구나 정도의 소음임.

 

 

 

 

반응형
Posted by 이름이 익명
:

2024 10 30 z일기

카테고리 없음 2024. 10. 30. 20:07 |

 

500만원짜리 고사양 노트북 삼 i9 14900 intel , rtx 4090 laptop 

 

짤막 소감

파일 옮기고 인터넷 보고 하는 기초적인 동작부터 

comfy ui flux ai 그림 짤뽑 속도까지 모든 게 빨라졌다

돈 다 쏟아부어서 5년에 한번씩 고사양 컴퓨터로 갈아치우는 건 의미 있는 행동이다

 

고사양 ㄴ트북은 키스킨 껍질 악세서리 구매가 힘듦

대중적이지 않은 제품이라 그럼

 

그래서 플랫한 만능 키스킨 써서 잘라서 써야함

 

 

+

 

medium 블로그는 갸 쓰레기다 모바일로 보려면 회원가입창 나와서 신규유입 죽 여버림

 

+

 

2024년 11월 STEAM 설문조사

 

 

NVIDIA (amd아님)

DX12

INTEL (amd아님)

이게 정석.

 

+

 

stable audio 1.0은 너무 기계음이 많아 별로임

그 이상버전이필요함.

 

반응형
Posted by 이름이 익명
:

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

 

roll a ball 이라는 튜토리얼을 함. urp 파이프라인 기준,

 

 

 

첫 씬을 만든 후

save as - Scene 폴더 만든 후 Minigame 이라고 이름 지어 저장 하면

이 지금 씬의 이름이 Minigame 이라고 지어짐

 

맨첨엔 암것도 없으니

하이어라키 메뉴 - 우클릭 - 3d object - 원하는 primitives 쉐잎을 생성

난 박스를 선택해서 바닥에 깔앗음

 

 

primitive 중 sphere 만든후 Player 라고 명명

이 강의에선 공이 주인공임

 

 

 

마테리알도 만들어보자. 드래그 해서 적용함.

surface inputs 의 base map 에서 색조절

 

player 에게 rigidbody 콤포넌트 추가

 

window - package manager - input system 깔기

 

키보드 입력 연관된 거라함

 

file- build profiles - x64 체크

 

 

https://learn.microsoft.com/ko-kr/visualstudio/gamedev/unity/get-started/getting-started-with-visual-studio-tools-for-unity?pivots=windows

visual script , unity 호환 설치

 

player 공에게 컴포넌트 player input 추

 

scripts 폴더추

 

player 에 콤포넌트 아래 new script 

PlayerController 

 

 

새 스크립트 만들었음 해당 폴더에 정리

 

+

 

코드에서

Void Start
처음에 딱 한번만 실행
초기화 작업때 사용

Void Update()
매 프레임(=틱, 1/60초) 마다 호출함
Update()는 불규칙하기 때문에 물리엔진에 부적합함

Void FixedUpdate()
고정된 시간 간격마다 호출.

물리연산(리지드바디)을 안정적이게 만듦

 

Void  LateUpdate()

Update()가 호출된 후 마지막에 호출됨
주로 플레이어 따라다니는 카메라는 LateUpdate() 를 사용함




+


코드에서 
using UnityEngine.InputSystem; 이라는 건 


난 앞으로 UnityEngine.InputSystem 
에서 있는 명령어들을 사용하겠다 라는 뜻이다

 

+

 

 

microsoft visual script 가 유니티랑 제대로 연결되었다면

코드 조금만 써도 자동완성기능 이 생김

→ 오른 화살표 키 를 누르면 자동으로 코드 완성해줌

 

 

+


괄호 영어로
소괄호 ( round bvracket
중괄호 { curly bracket
대괄호 [ square bracket

 

 

오타가 안 나게 항상 주의하자

오타가 없나 항상 체크하자

 

 

 

 

값을 직접 조절해야하는 것이면 public 으로 바깥공개

개발자가 굳이 값을 보지 않아도 되면 private

 

 

 

가속도 붙어서 움직이는(물리 법칙이 자연스러운) 공의 이동

을 구현한 코드는 아래와 같음

 

Z 축 점프는 뺀 거임

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerController : MonoBehaviour
{
    public float speed = 3; //기본속도는 3으로 설정

    private Rigidbody rb;

    private float movementX;
    private float movementY;

    // Start is called once before the first execution
    // of Update after the MonoBehaviour is created
    void Start()
    {
        rb =  GetComponent<Rigidbody>();
    }
    void OnMove(InputValue movementValue)
    {
        // function Body
        Vector2 movementVector = movementValue.Get<Vector2>();

        movementX = movementVector.x;
        movementY = movementVector.y;

    }
    void FixedUpdate()
    {
        Vector3 movement = new Vector3(movementX, 0.0f, movementY);

        rb.AddForce(movement * speed);
    }
}

 

 

 

 

rotation x 45 로 하고 position y 10 정도 올린게 일반적인 카메라 뷰

 

 

플레이어 하이어라키 아래쪽으로 메인 카메라를 종속 시키면

아래와 같이

 

플레이어가 회전하면 카메라도 따라서 회전하는 문제가 있음

 

 

그래서 그냥 main camera 와 player 를 서로 child 안 시키기로 하고,

스크립트로 연결시키게 하기로 함

 

main camera 에 새 스크립트 CameraController 생성

스크립트를 스크립트 폴더로 옮겨 정리

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour
{
    public GameObject player;

    private Vector3 offset;

    // Start는 첫 프레임 업데이트 이전에 호출됩니다.
    void Start()
    {
        offset = transform.position - player.transform.position;
    }

    // Update는 프레임마다 한 번씩 호출됩니다.
    void LateUpdate()
    {
        transform.position = player.transform.position + offset;
    }
}

CameraController 스크립트를 위와 같이 씀

 

CameraController 의 Player 칸에 플레이어 드래그해서 지정

 

이러면 회전값은 반영 안되지만, 위치값은 플레이어를 따라다니는 카메라가 되버림

 

+

 

 

 

벽을 cube 로 만들고

empty 오브젝트 안에 west east north south 4개를 일일히 만듦. 일일히 손수 배치.

그 후 box collider , is trigger 체크안함 이 되어있나 확임

 

 

노란 큐브 생성 후 이름을 PickUp 생성

콜렉터블 오브젝트 만들거임

 

 

PickUp에게 Rotator 라는 새 스크립트를 만들고 적용시킴

 

 

using UnityEngine;
using System.Collections;

public class Rotator : MonoBehaviour
{

    void Update()
    {
        // deltaTime 값을 곱하면 프레임이 아닌 초를 기준으로 회전함
        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
    }
}


Translate 는 이동시킨다는 뜻
Rotate 는 회전시킨다는 뜻

Time.deltaTime은 부드러운 움직임을 위한 것

+

 

Prefabs 폴더를 만든후

노란 네모 PickUp을 드래그 해서 넣기

 

한번 프리팹 인스턴스가 되면

하이어라키 리스트 창에서 파란 네모 아이콘이 됨

 

인스턴스 옆 > 화살표를 클릭하면 해당 프리팹 수정 가능해짐

 

PickUp Parent 엠티오브젝트 생성후 transform reset 

 

페어런트를 이렇게 PickUp을 아래에 속하게 하기

 

PlayerController cs 맨 아래에 저 줄을 추가한다

부딪치면, 대상을 사라지게하는 것임

 

prefabs 선택법

왼위 화살표 클릭 또는

아래 프로젝트 창 에서 클릭

 

add tag , + 버튼 클릭해 새 태그 추가

 

프리팹 선택으로 돌아가서.. tag 란에 내가 만든 ' PickUp ' 이라는 태그가 추가된걸 확인할 수 있음

 

 

아까 설정했던
private void OntriggerEnter Collider oher (부딪치는 물체를 사라지게 함)
에 PickUp tag 만 적용되게 하려면...

 

    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("PickUp"))
        { 
            other.gameObject.SetActive(false);
        }
    }

PalyerController cs 에서 위 코드를 설정하면

  다른 오브젝트와 충돌이 발생시,

  그 오브젝트의 태그가 PickUp 일시,

  그 오브젝트를 비활성회 시키겠다

라는 뜻임

 

프리팹의 콜라이더 인스펙터에서 Is Trigger 를 활성화 시키자

 

그러면 노란 박스 프리팹 건드릴때마다 노란 박스 프리팹이 성공적으로 사라짐

 

노란박스 프리팹에 Rigidbody 추가.

Use gravity 끔

is kinematic 킴

 

 

+

 

공 수집 개수 체크하기

굳이 개발자가 일일히 설정하는 숫자가 아니라서 private 로 설정함

원리는 매 게임 시작할 때마다 0으로 시작함
노란박스 하나씩 수집할 때마다 1개씩 증가함

 

count 를 새로 지칭하고, count 가 처음엔 0 으로 시작하고, 충돌시마다 count 개수가 1씩 증가하도록 코드를 짬

 

 

하이어라키 메뉴 - 우클 - ui - text textmeshpro

 

import tmp essentials 클릭 

그리고 x 버튼으로 그 자그만한 tmp 메 끄기

 

 

Text (TMP) 이름을  CountText 로 변경

 

 

 

화면 위 2D 뷰 토글

 

오른쪽 Text Input 안에 Count Text 라고 쓰기

 

 

저 빨간 네모칸을 누르면

anchor 기준을 변경 가능. 여기선 왼위를 기준으로 삼겠다

 

 

 

Player Controller sc 인스펙터

Count Text 에 Count Text 를 드래그

 

 

 

text mesh pro 하나 더 생성 후 이름변경 : WinText

vertex color 는 블랙으로 설정

Text input 칸엔 You Win! 라고 쓰기

 

 

 

 PlayerController 스크립트 속

wintext를 알리는 유니티 고유 언어 
public GameObject winTextObject; 
라고 지정

wintext는 시작시 꺼짐상태임
void start 란에 winTextObject.SetActive(false); 를 넣음 

void SetCountText 아래에
if 절을 추가함
if (count >= 8) 
{
 winTextObject.SetActive(true);
}
카운트 수가 8개가 되면 승리하도록 설정

(강의에서는 12개지만 난 8개로 설정)

 

 

 

 

win text object 에 win text 드래그

 

텍스트 표시까지 완료하면 아래와 같은 코드가 됨 :

using UnityEngine;

// Unity UI 및 Input System을 사용하는 데 필요한 네임스페이스를 포함합니다.
using UnityEngine.InputSystem;
using TMPro;

public class PlayerController : MonoBehaviour {
	
	// 플레이어 속도 및 텍스트 UI 게임 오브젝트에 대한 public 변수를 만듭니다.
	public float speed;
	public TextMeshProUGUI countText;
	public GameObject winTextObject;

        private float movementX;
        private float movementY;

	private Rigidbody rb;
	private int count;

	// 게임을 시작할 때
	void Start ()
	{
		// 리지드바디 컴포넌트를 private rb 변수에 할당합니다.
		rb = GetComponent<Rigidbody>();

		// count를 0으로 설정합니다. 
		count = 0;

		SetCountText ();

                // Win Text UI의 텍스트 프로퍼티를 빈 문자열로 설정하여 'You Win'(게임 오버 메시지)을 공백으로 만듭니다.
                winTextObject.SetActive(false);
	}

	void FixedUpdate ()
	{
		// Vector3 변수를 만들고 X와 Z를 할당하여 위의 horizontal 및 vertical 플로트 변수를 구현합니다.
		Vector3 movement = new Vector3 (movementX, 0.0f, movementY);

		rb.AddForce (movement * speed);
	}

	void OnTriggerEnter(Collider other) 
	{
		// 교차하는 게임 오브젝트에 'Pick Up' 태그가 할당되어 있는 경우
		if (other.gameObject.CompareTag ("PickUp"))
		{
			other.gameObject.SetActive (false);

			// 점수 변수 'count'에 1을 추가합니다.
			count = count + 1;

			// 'SetCountText()' 함수를 실행합니다(아래 참조).
			SetCountText ();
		}
	}

        void OnMove(InputValue value)
        {
        	Vector2 v = value.Get<Vector2>();

        	movementX = v.x;
        	movementY = v.y;
        }

        void SetCountText()
	{
		countText.text = "Count: " + count.ToString();

		if (count >= 12) 
		{
                    // 'winText'의 텍스트 값을 설정합니다.
                    winTextObject.SetActive(true);
		}
	}
}

 

 

 

 

노란 박스를 하나씩 먹으면 count 수가 하나씩 올라가다가..

8개 이상 이 되면

you win! 출력 됨

 

 

 

이제 게임이 왼성되었으면

녹화도 하고

build 하면 됨 

빌드는 window, mac, ios 등 여러플랫폼으로 출판하는 걸 의미함

 

+

 

코파일럿 ai 응용하기

 

코드 복붙 후 , 원하는 프롬프트 넣으면 코드를 수정해줌

 

 

 

위 스샷처럼

카운트 수를 8 고정이 아니라,

인스펙터 창에서 내맘대로 수정 가능하게 만들 수 있음

 

코드 복붙후,

자연어 입력후,

코파일럿이 싸지른 거 

스크립트 창에 복사 붙여넣기 하면 됨

 

 

문제는,

두리뭉실하게 말하지 말고

콕콕 찝어서 자세히 말을 해야함

그러려면 유니티 코딩관련 지식을 더 많이 알아야 함

 

 

반응형
Posted by 이름이 익명
:

https://assetstore.unity.com/ko-KR

 

 

내 위시리스트임. 아래 어셋 개수는 15개 정도 있으며 다 사면 80만원 정도 함.

 

 

rainbow 시리즈, 두트윈, 필, 세이브 ,다이얼로그, 텍스트 애니메이터   ㅡ 이정도는 사도 좋음

 

나머지는 일단 중급자 레벨 되고 나서 생각해봐도 됨

 

 

+

 

https://docs.unity3d.com/Packages/com.unity.muse.common@2.0/changelog/CHANGELOG.html

유니티 ai muse 업뎃 소식

챗봇상담, 2d 이미지 생성, 3d 애니메이팅, 비헤이비어,pbr 텍스쳐 생성 등

구독은 월 30달러, 3만원 꼴

 

 

 


 

 


DOTween pro
easy ease
시작 시점과 종료 시점을 설정. 두 물체간 상호작용 강화.
위치/회전/크기 등 애니메이션을 쉽게 구현하는 기법

드랍템 줍기, 투사체를 따라가는 카메라, 심화된 파티클 연출 등을 구현하기 쉽게 해줌

 

sequence : 물체가 다른 물체를 따라다니는 기능

 

코딩 없이 컴포넨트 하나로 쉽게 구현가능

플레이 테스트 모드 안 켜도 바로 미리보기 가능

 

-> 두트윈, 필 둘다 비슷한 역할을 하니

둘 중 하나만 골라도 된다함

필은 더 쉬움. 두트윈은 더 대중적임




Rainbow Folders 
유니티 에딧창의 폴더를 색상과 아이콘으로 쉽게 구분


Rainbow Hierarchy
하이어라키 레이어 창을 색상과 아이콘으로 쉽게 구분
업데이트 지원 안함

 

 

vHierarchy 2

아이콘 및 하이어라키 창 정리

 

 


FEEL 
ui, 오브젝트, 카메라의 향상된 움직임 을 쉽게 구현

타격감을 만들기 쉽게 해주는 에셋
easy ease 움직임 또잉또잉, 카메라 흔들림, 카메라 멀리 보기 등등  
애니메이션 가속도 커브 넣기

스킬 필살기 만들 때 유용

 

Grabbit

오브젝트 배치를 쉽게 해줌

수작업 없이 물리 기반 물체 쉽게 배치, 물체 정렬 기능, 무게중심 조절,더 정확한 메쉬기반 콜라이더

 

 


Text Animator for Unity
여러 텍스트 애니메이션 프리셋 
데미지 인디케이터 만들 때 유용

 


Master Audio 
버튼 한방으로 관리
audio 플레이시 random pitch 기능

Audio Random Container

무료 내장 에셋 , 이미 있음

랜덤 오디오 재생할 파일 여러개를 하나로 묶을 수도 있고,

피치도 볼륨도 랜덤조절 가능

 

 


Dialogue System for Unity
시각적 ui 기반. 
대화 분기를 보기 쉽게 만들 수 있음
퀵타임 이벤트, 퀘스트 시스템 등


Ultimate Inventory System
아이템 관리, 장착, 상점, 제작, 루팅, 몬스터드랍, 핫바
 2D 및 3D 지원


Easy Save
데이터 저장 및 불러오기

 


PLAYMAKER
코드 없이 게임 만드는 용도
비쥬얼 스크립팅

기존 비쥬얼 스크립팅(볼트, 노드)은 덜 직관적임
플레이메이커는 그보다 더 쉽게 만든 것

 

->
그냥 볼트(내장 비쥬얼 스크립트)만 쓰는 걸 추천하는 사람도 있음

볼트가 아이콘도 있지만 플메는 아이콘이 없음

 

 

 

 


Tactics Toolkit
택틱스 턴알피지 제작 어셋

전투 및 그리드 등등 메카니즘 전반적인 것을 다룸


 

+

 

 


Easy Performant Outline
아웃라인 외곽선을 딸-깍 해서 만드는 거
인게임 타겟 설정시 유용

 

 

 

Volumetric Lights
연기빛 , 태양빔을 제작

 

 

Shapes
변수에 따른 도형을 생성 가능

'공격력이 높을수록 더 큰 파이어볼을 시전'  이러한 스킬 만들 때 유용
각종 인터렉티브 ui 만들 때도 유용

 

 

curved world

휘어진 월드(및 무한 루프 길)을 쉽게 제작

재밌는 맵을 쉽게 딸 깍

 

 

 

Paint Bundle
인게임에도 적용 가능. 마테리알 텍스쳐 응용 어셋임
낙서, 페인트, 피묻힘 효과,문신, 발자국 등 표현

반응형
Posted by 이름이 익명
: