목록분류 전체보기 (384)
VioletaBabel
심심해서 해야할 건 안하고 즉흥으로 만들어 봄 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143//Settings.csusing System.Collections;using System...
구글 스프레드시트를 이용해 데이터를 만들자.실시간으로 받아오는 것은 느리므로, 만들어서 파일을 넣는게 낫다.물론 엑셀이 있으면 그냥 엑셀 쓰는게 제일 편함. GameData.cs에 class로 playerdata를 만들어 현재 hp, 최대 hp, 현재 mp, 최대 mp, atk, def를 담는다.그리고 leveldata라는 클래스를 만들어 level, atk, def, hp, mp, exp를 담는다. 그리고 Dictionary 형 변수를 하나 만든다. 그 후 defaultData()라는 변수를 만들어 그 안에서 leveldata를 하나 new 시켜 레벨업 될 때마다 변하는 데이터를 규칙적으로 넣어 Dictionary에 담는다. === save(), load()함수를 만든 후 에셋 스토어에서 Json을 다..
적이 캐릭터와 가까워지면 공격, 멀어지면 다시 패트롤하게 할 것. === 우선 웨폰 매니저에게 나무를 받아와서 부모를 손으로 두면 나무 막대기를 쥔다. === Find를 하고 나면 null 검사를 하는게 좋다. 터지는 것을 방지.무언가가 죽었다가 다시 살아날 때, active를 껐다 켜도 되지만 destroy하고 다시 instantiate하면 메모리가 달라져서 검사를 하지 않으면 터질 수 있다. === NavMeshAgent를 이용해 주인공과 일정 거리 안이면 다가오게 한다.그리고 공격반경 내에 들면 플레이어의 방향을 보고 공격 모션을 취하도록 한다. === [Header("적힐 말")] 을 public 앞줄에 붙이면 묶인다.그 뒤에 있는 애들이 항목으로 묶인다. 변수값 입력에 슬라이드바도 넣고 싶거든 ..
몹을 움직여보자.5초에 1번 움직이게 한다.몹에게 NevMeshAgent를 넣는다.리스폰 몹 매니저를 만든다.그리고 위치들을 게임오브젝트로 만들고, 그걸 저장해 거기를 따라 가게 함그리고 NavMeshAgent형 변수 agent를 만들어 getcomponent한 후, agent.autobraking을 false해준다. (autobraking이 true면 목적지에 도달하면 속도가 느려짐) === 변수에 set을 할 때 value라는 키워드는 넣는 값을 의미. === InvokeRepeating() 함수가 있다. 일정 시간마다 반복하게 해주시는 듯.별도로 MoveMob()이라는 함수를 만든 후, InvokeRepeating("함수명",시작시간,실행주기); 식으로도 이용할 수 있다.이를 막으려면 CancelI..
무기를 쥐어주자.오른 손에 무기를 넣어주자CharWeapon.cs라는 파일을 만든다.그리고 맘에 드는 프리팹을 Start()에서 만들어줄 것이다.무기를 프리팹으로 넣어두고 instantiate한다.각도나 그런건 잘 넣는다. === LeftControl을 눌렀을 때 휘두르게 해보자. Invoke("함수명",시간); // 몇 초의 시간 후에 기재한 함수를 실행하는 함수. 이걸 이용함. === 몹을 등장시킴 나무에 콜라이더를 트리거로 넣고 리지드바디를 키네틱으로 하였다. Weapon.cs를 만들고 거기에 공격력 수치를 넣는다. Mob.cs도 만들고 체력, 방어력 수치를 갖는다. 그리고 addDamage 함수를 통해 체력을 깎도록 하였다. 웨폰의 트리거엔터 함수에서 몹의 addDamage를 실행시킨다. 그러면 ..
카메라에 BgmOnOff는 있는데 볼륨 조절이 없으니BGM.cs에 setVolume(float vol) 함수를 만들어 볼륨을 저장그렇게 사운드 조절과 퀄리티 세팅도 다 넣어주자. === 게임씬이라는 애를 만든다.시작 버튼 누를 시 그 씬으로 가도록 이어준다. === 터레인을 만들고 주인공을 넣는다.카메라가 주인공을 따라가게 하자.FollowCamera.cs를 만든다.그 다음 주인공을 public gameobject로 받아온 후 주인공의 포지션과 카메라의 포지션을 벡터3로 각각 저장한다(heroPos, camPos)그리고 카메라의 포지션을 주인공에게서 일정 위치로 떨어뜨려놓는다.(우선은 주인공이 어디를 보든 상관없이 한 쪽으로 카메라 고정) ===그리고 주인공의 움직임을 다룰 스크립트를 만들자.MoveCh..
Sprite로 로고를 화면에 띄우고 스크립트(Logo.cs)를 하나 붙인다.Logo.cs에서는 DoTween을 이용한다.로고의 SpriteRenderer를 Getcomponent하고나타났다 사라지게 DoFade를 Sequence로 준다.이 때 시퀀스가 다 끝난 순간을 알기 위해 Sequence sq = DoTween.Sequence().AppendInterval(1.0f).Append(할 일들 쭉 .Append로 넣어줌).AppendCallback(() =>{시퀀스 끝나면 불릴 함수});sq.Play(); === Canvas를 World Space로 만든 후 Button을 단다(게임시작, 종료) 그 다음 Canvas의 active를 꺼두고 Logo.cs에 그 canvas를 public한 GameObjec..
빌보드 : 3d 게임에서 모델링 대신 이미지를 판처럼 세워두는 것. 멀리 있는 건물, 자연 풍경 등에 이용. 항상 플레이어를 바라보게 만듦. 유니티에서 퀄리티 세팅이라는 것이 있다.옵션에서는 그걸 이용하면 됨. LOD : Level of Detail. 멀리 갈 수록 작은 이미지를 써서 속도를 올림. 이거 대신 mipmap을 사용할 수도 있다. 프로그램 적으로 줄이거나, mipmap을 이용하거나인데 전자는 속도가 떨어지나 용량이 줄고, 후자는 용량이 늘지만 속도가 빠르다. 가장 퀄리티 세팅에서 쉽지만 강력한 영향을 주는 것이 빛을 얼마나 멀리까지 비추느냐, 텍스쳐 크기를 얼마나 줄이느냐, 카메라에서 멀리 떨어진 것은 안개를 준다던가. 어쨌든 유니티에 기본으로 있는 세팅을 바꿔보려면 이러면 됨 1234567..
--방법 1Camera랑 Render Texture를 하나 만든다.미니맵 용 카메라는 Depth를 main Camera보다 낮춘 후, 미니맵 용 카메라에 Viewport Rect를 조정한다.orthographic으로 할 것.지형지물을 컨트롤+D로 복사 후, 레이어를 새로 하나 만들어 넣어준다(Minimap)그리고 미니맵 출력용 카메라의 Culling Mask를 그 레이어로 해둔다. --방법 2위와 비슷하게 가나, Render Texture를 하나 만든다.카메라의 Target Texture에 그 렌더 텍스쳐를 넣어준다.캔버스를 만들고 그 자식으로 게임 오브젝트를 만들어 mask와 image를 컴포넌트로 넣어준다.image의 source image는 동그란 원을 넣는다.그리고 자식으로도 게임 오브젝트를 하나..
아직 채팅 기능은 없으나, 서버 연결만 확인해보기 http://violetababel.tistory.com/413 의 서버 부분은 그대로 사용.서버를 켜고 스타트를 누른 후유니티에 다음 코드를 짜서 넣어둔다. 123456789101112131415161718192021222324252627282930313233//ChatClient.csusing System.Collections;using System.Collections.Generic;using UnityEngine;using WebSocketSharp; public class ChatClient : MonoBehaviour{ WebSocket mWebSocket; int i = 0; // Use this for initialization void S..