전체 글 65

게임 제작일기 2

먼저 유닛을 대량으로 싸움을 붙여봤는데 잘 싸우는 것 같다. 그리고 이제 유닛에게 스킬을 하나씩 넣어주기로 했다. 그리고 스킬을 넣기 전 어떤 상황에 어떤 상태를 만들지 정하기 위해 각 트리거를 enum으로 나누고 시작했다. 그리고 'Effect' Class를 만들고 유닛에게 일어날 상황 3가지를 나누고 'Effect'를 상속시켰다. Effect_Damage : Effect = 데미지를 주는 상황 Effect_DamageOverTime : Effect = 지속적으로 데미지를 주는 상황 Effect_AddStatus : Effect = 유닛의 스텟을 바꾸는 상황 (힘 버프, 쉴드 증가 등) 그리고 데미지의 종류도 3종류로 나누어 만들었다. 동영상을 보면 15씩 지속데미지를 주는 스킬을 쓰는 '궁수', 자세..

개인 프로젝트 2023.09.27

게임 제작일기 1

장르 : 로그라이크 + 오토체스류? 제작 인원 : 1 제작 환경 : 유니티 일단 가장 먼저 개발해야 하는게 무엇일까 생각하다가 오토체스로 싸우는 부분부터 만들기로 했다. 일단 이동을 위한 좌표를 위 처럼 지정했고 간단한 길찾기 알고리즘을 만들어 적용시켰다. .......... 약간 길 찾는게 멍청하긴 해도 일단 잘 찾으니까... 약간의 인간미로 합격점을 주고 다음으로 넘어갔다. public static Vector3 Get_RoundVector(Vector3 vector) { return new Vector3(Mathf.Round(vector.x), Mathf.Round(vector.y), Mathf.Round(vector.z)); } public static int Get_Distance(Vector3..

개인 프로젝트 2023.09.24

[유니티] 3D 랜덤 맵 생성 3

3D PerlinNoise 이전에 쓴 PerlinNoise 는 가장 위쪽을 기준으로 아래로 블록을 깔아 지형의 굴곡이 다양하지 않아 2D와 다를게 없었다. 그래서 기존의 PerlinNoise의 공식을 3D로 바꾸기로 했다. private float NoiseGenerater(float X, float Y, float Z) { X = X / 10 + Seed; Y = Y / 10 + Seed; Z = Z / 10 + Seed; float xy = Mathf.PerlinNoise(X, Y); float yz = Mathf.PerlinNoise(Y, Z); float xz = Mathf.PerlinNoise(X, Z); float yx = Mathf.PerlinNoise(Y, X); float zy = Mat..

코딩/유니티 2023.05.26

[Unity] 3D 랜덤 맵 생성 2

최적화 이전에는 PerlinNoise를 활용해서 맵을 만들었다. 이제 만들어진 맵을 최적화 해보려고 한다. 이전화에는 숨겼지만, 사실 메쉬가... 어마어마하게 많이 잡힌다. 저 상태에서 움직이면 렉도 걸림 ㅎㅎ; 이는 블록 하나하나가 6면체를 메쉬하기 때문인데 보이지 않는 부분은 메쉬를 없애줄 필요가 있다. 메쉬 재생성 그래서 블록의 메쉬를 가져와 Vertices과 Triangles을 건드려 수정하기로 했다. 메쉬 부분은 이분의 블로그를 참고했다. https://dongyeopblog.wordpress.com/2016/08/15/unity-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C-%EB%B0%95%EC%8A%A4%EB%A7%8C%EB%93%A4%EA%B8%B0cu..

코딩/유니티 2023.05.23

[Unity] 3D 랜덤 맵 생성 1

랜덤 맵 생성을 위해 PerlinNoise 를 활용 했다. PerlinNoise 는 간단히 설명하면 float 값 두개를 받아 0 ~ 1 사이의 연속적인 난수값을 형성해준다. 참고 https://docs.unity3d.com/kr/530/ScriptReference/Mathf.PerlinNoise.html Mathf-PerlinNoise - Unity 스크립팅 API Generate 2D Perlin noise. docs.unity3d.com 일단 간단하게 PerlinNoise를 활용해 맵을 만들어 보았다. public class MapSetting : MonoBehaviour { [Header("블록")] public List Block = new List(); [Header("맵 사이즈")] publ..

코딩/유니티 2023.05.23