unity 53

3) Unity Text 모자이크 처리 - 2D 게임

Shader를 사용해 모자이크 처리를 해보았다면 mask된 글자를 사용하여 모자이크 처리를 해보자 예를 들으면 #$%@#%#@!의 글자에서 "안녕 나는 rimugi야" 이런글자로 특정 시간동안 변화하게 만든다면 될거라고 예상하였다 1. 랜덤 모자이크 생성주목할 점은 2가지다1. StringBuilder를 이용한 최적와2. maskCharacter를 사용한 랜덤 모자이크 글자 생성[SerializeField] private string[] _maskCharacters = { "#", "*", "@", "$", "%", "&", "!" }; // 특수문자 집합private string GetRandomMaskedText(int length){ StringBuilder randomText = new St..

2) TMPro 글자 모자이크처리 매우 간단한 방법 - 2D 게임

편하게 글씨를 모자이크 처리를 하기위해 찾아보다 TMP의 material을 조정하니 비슷한 효과를 내는것을 알게 되었다매우 간단하게 TMPro의 outline에 thickness값을 조정하여 글자가 외곽으로 번지게 만들어 주는 효과를 이용하것으로 단점으로는 전에 랜더링모드를 Hinted Raster로 하면 이 값을 조정할 수 없어 다른 방법을 찾아야 할것이다 private IEnumerator ShowText(){ yield return null; //모자이크 효과 while (_bubbleText.outlineWidth > 0f) { _bubbleText.outlineWidth -= _mosaicRemoveSpeed * Time.deltaTime; yiel..

2D 스토리게임 개발 1) PPU, TMPro

원래 일정에 없었던 개발을 우연한 기회로 진행하게되어 단기간동안 개발하면서 겪은 사항들을 정리해보자 1. PPU2D 픽셀에서 가장 중요한 점음 PPU를 통일하여 카메라의 이동시에서 픽셀의 깨짐현상이 일어나지 않게 하는것이다Pixcel per unit 즉 PPU는 유니티상의 1유닛공간에 얼마만큼의 픽셀을 넣을지를 결정하는 것으로 16PPU이면 1유닛공간에 16개의 픽셀이 차지하게 된다. 따라서 자신의 게임에서 원하는 퀄리티에따라 PPU를 결정하고 이를 통일하게되면 2D게임상에 이동시에 픽셀이 깨지는 현상을 사전에 막을 수 있게된다. 하지만 여기에서 하나 더 중요한 점은 카메라의 size를 PPU와 해상도에 대응되게 작업해야 화면이 제대로 랜더링 되는데 이는 공식이 있지만 더 간단한 방식으로 pixcel p..

Unity - 절차적 동굴 생성 (셀룰러 오토마타)

전에 절차적 지향 맵 생성을 제작해 보았는데 이번에는 다른 알고리즘으로 동굴느낌의 맵을 생성하려고한다. Unity2D 절차 지향적 맵 생성2D 타일맵을 검색해 보면 BSP 알고리즘을 이용한 생성과 간단한 절차 지향적 알고리즘을 이용한 생성을 많이 소개합니다그중 절차 지향적으로 랜덤맵을 생성하는 방법을 시도해 보았습니다 결rimugiri.tistory.com 셀룰러 오토마타라는 알고리즘을 약간 변형하여 사용한 것인데 유전자 알고리즘과 비슷하게 현재 세대가 다음세대에 영향을 미치고 변형하는 원리의 알고리즘이다. i번째 세대에 어떤 셀이 빈공간이고 그 주변의 8칸중 5칸 이상이면 벽으로 3칸 이하면 빈공간 4칸이면 그대로 둔다 이렇게 되면 세대를 거듭 할때마다 최종적으로 특정 모양으로 이뤄진 공간이 남고 이 ..

Unity Tool - 버튼 attribute 만들기

코드를 실행할때 플레이 버튼을 눌러 실행하는 것이 불편하여 Edior 기능을 알게되어 InspectorUI를 그동안 활용하고 있었다. 하지만 이것의 문제점은 그때마다 Edior 스크립트를 만들어 줘야되고 이를 또 Edior 파일에 넣어줘야 빌드가 완료되는것이 너무 귀찮았다. 그래서 떠올른 것이 [Serializable] 같은 어트리 뷰트로 Button을 만들면 되지 않을까 라는 생각이였고 확인해 보니 다른 분들도 많이 이를 활용하는 것으로 보여졌다 1. 기초 구조 제작하기- 어떤 매개변수들을 적용할지 어떤 매소드를 대상으로 동작할 지 선언해 준다- 현재 이름을 통해 에디터 상에 나올 이름을 표시할 수 있게 해주고 모드를 선택하여 test용도로만 사용가능할수 있도록 만들어 주었다using System;us..

2인용 간단한 pingpong 만들기 - Photon, firebase

저번에 firebase를 사용해서 데이터베이스에 있는 데이터를 받아오는 것을 구현해 보았고 이번에는 그것을 떠올리며 로그인과 Photon의 간단한 사용법을 익힐 예정이다 우선 인증은 이메일 인증만 구현해 보았다public void Start(){ signInButton.interactable = false; FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => { var result = task.Result; if (result != DependencyStatus.Available) { Debug.LogError(result.ToString()); ..

keytool 문제 해결방법 - keytool은 내부또는외부명령,실행할수있는프로그램,또는배치파일이아닙니다.

파이어베이스의 sh1 인증을 추가하기위해 keytool을 사용하려고 했는데 계속 없다고 나온다...1. jdk가 존재하지 않을경우jdk를 설치해준다 2. 환경변수가 생성되어있지 않을경우시스템 환경변수로 들어간뒤 path부분에 경로를 설정해 준다 3. cmd를 관리자전용으로 실행하지 않았을 경우관리자 전용으로 실행해 준다 동작 확인방법1. java -version2. javac 이 두가지가 성공적으로 실행되면 1, 2문제가 아니고 3문제이니 관리자 전용으로 실행해 준다

[Unity] 물리엔진 물리이동 정리

이 글은 유니티 개발의 정석 책을 읽은뒤 이를 바탕으로 작성하였습니다. 유니티에서 rigidbody를 설정하고 collider을 설정하였을때 transform으로 이동할 경우로 rigidbody로 이동할 경우 어떻게 대비해야되는지 항상 고민이 많았다 이때 위 책을 읽은뒤 모든 정리가 끝났다. 1. transform으로 이동할때-> rigidbody : isKinematic 2. 물리로 이동할 경우-> rigidbody : NonKinematic 3. 움직이지 않는경우-> no rigidbody 이렇게 자신에게 맞는 방식대로 설정해 줘야 trigger영역이나 collider영역이 알맞게 움직여 충돌이 예상대로 이루어 진다 추가물리엔진을 이용한 이동이나 힘의 작용의 경우 동일한 환경에서 약간의 차이가 발생할..

[Unity] 간단한 문 열기만들기 - joint

이번에 조인트라는 기능을 알게되어 간략하게 joint를 사용해 문을 여는 것을 만들어 보려고한다결과1. 원하는 문에 hint joint컴포넌트를 달아준다axis의 y를 1로 설정해 주어 y축 회전을 막아준다anchor를 -0.5로 변경하여 중심점을 문의 가운데가 아닌 왼쪽으로 설정해 준다Use Spring의 경우 반동을 줄지 말지 결정해 주는것인데 원래 상태로 돌아오는문을 만들고 싶으므로 설정해준다UseAcceleration 경우 감속을 할지 말지 설정해주는것이다 2. 힘 적용z축에 force만큼의 힘을 가하는 코드이다바로바로 힘을 가해보고 싶으므로 약간의 Edior를 가미해 주었고 주요 코드는 Throw다using UnityEditor;using UnityEngine;[CustomEditor(typeo..