shin0624

Unity Engine / Client Programming / IndieGame Develop Team / Computer Engineering

Game Programmer With Unity Engine GitHub

UnityPortfolio 12

[Unity] 닉네임 비속어 필터링 기능 구현(뒤끝 SDK 활용)

[뒤끝팁] 닉네임부터 길드 이름까지! 비속어 필터링 SDK - 뒤끝 블로그오늘은 새롭게 추가된 뒤끝 비속어 필터링 SDK를 소개합니다. 비속어 필터링 SDK는 유저가 입력하는 모든 콘텐츠를 필터링할 수 있는 기능인데요! 지금부터 활용처부터 간단 사용 방법까지 함께blog.thebackend.io게임 서버 관리 시스템 "뒤끝"에서 제공하는 뒤끝 비속어 필터링 SDK를 활용하여 닉네임 비속어 필터링 기능을 구현했다.TheBackend > ToolKit > InvalidFilter > Resources 폴더에 존재하는 InvalidString 파일에 필터링 되어야 할 비속어들이 9000라인이 넘게 저장되어 있다. 비속어 필터링을 사용한 닉네임 입력 기능 구조를 아래와 같이 잡아보았다. 닉네임을 입력받을 Inp..

[Unity] 동일한 Terrain을 사용하는 Scene의 Spawn Point 제어

1,. 문제지금 개발 중인 LoeGriA는 Olenamento라는 큰 대륙에서 모험, 전투, 퀘스트를 즐기는 RPG이다. 커다란 Terrain을 여러 부분으로 나누어 각 씬의 마을, 던전 등으로 사용하고 있다.즉, 동일한 Terrain을 여러 Scene에서 재사용하고 있는 상황이다.던전 1, 2, 마을은 모두 같은 Terrain을 공유하는 서로 다른 Scene으로 구성되어 있다.던전 2에서 뒤를 돌아보면 같은 Terrain을 사용하는 던전 1과 마을의 모습이 멀찍이서 보이는 모습이 너무 보기 좋아서 이와 같은 방법을 사용했는데, 이게 화근이 되어 다른 문제를 유발했다. 각 Scene에서 다른 Scene으로 이동할 때, spawnPoint라는 빈 오브젝트를 두어 플레이어의 Scene 별 스폰 지점의 pos..

[Unity] 스킬 기능 구현 (2) 공격 판정 로직 모듈화

이전 글 [Unity] 스킬 기능 구현 (1) PlayerController 책임 분리마우스 버튼 또는 특정 키를 누를 때 각각 다른 공격 모션이 나오도록 하는 스킬 기능을 구현해야 한다.하지만 이 기능을 포함하여 앞으로 추가될 많은 기능을 전부 한 클래스에 집어넣는 건 객shin0624.tistory.com마우스 버튼 또는 특정 키를 누를 때 각각 다른 공격 모션이 나오도록 하는 스킬 기능을 구현스킬 추가를 위해 공격 판정 로직을 개선하였다.마우스 또는 키보드 입력을 받아 공격을 요청하는데, 이 때 매개변수로 쓰이는 정수 값을 기준으로 어떤 공격 모션이 재생될 것인지 구분할 수 있게 했다. 필요한 클래스는 아래와 같다.IPlayerAttack : 정의된 공격 실행 메서드에 매개변수 추가PlayerCon..

[Unity] 스킬 기능 구현 (1) PlayerController 책임 분리

마우스 버튼 또는 특정 키를 누를 때 각각 다른 공격 모션이 나오도록 하는 스킬 기능을 구현해야 한다. 하지만 이 기능을 포함하여 앞으로 추가될 많은 기능을 전부 한 클래스에 집어넣는 건 객체지향 원칙에 어긋나는 방법이고, 무엇보다 나 자신도 코드를 읽기 불편하다. 우선 PlayerController의 기능 중 공격을 담당하는 기능을 분리하려고 한다.PlayerController는 캐릭터의 입력, 이동, 상태 관리를 담당하도록 수정PlayerAttack은 공격 로직과 공격 애니메이션, 콤보 관리를 담당하도록 작성두 클래스가 느슨하게 결합되도록 인터페이스 IPlayerAttack을 작성 구조를 그려보면 이렇게 될 것이다.1. IPlayerAttack 인터페이스 정의 using System.Collectio..

[Unity] 캐릭터 HP 시스템 구현

플레이어와 에너미의 HP 시스템을 구현하기 위해 아래와 같이 준비했다.플레이어 HP 관리 클래스 플레이어 HP UI 관리 클래스플레이어 HP UI에너미 HP 관리 클래스에너미 HP UI 1. 플레이어 HP플레이어의 HP는 Scene이 바뀌어도 정보가 그대로 유지되어야 하므로 static 인스턴스로 선언하고 HP 변경이 있을 때 마다 OnHPChanged 이벤트로 핸들링 될 수 있도록 작성했다. 사망 처리, 회복 처리도 차차 추가할 계획이다.using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerHP : MonoBehaviour{ //플레이어 HP 관리 매니저 p..

[Unity] Object Pooling으로 에너미 객체 관리

Object Pooling을 사용하여 에너미 객체의 스폰, 리스폰을 관리하려 한다. 필요한 스크립트는 아래와 같다. - EnemyPool : Pool을 생성하고 Pool에서 객체를 꺼내는 메서드, 반환하는 메서드가 선언되어 있음.- EnemySpawnManager : 플레이어가 특정 조건을 만족했을 때 EnemyPool의 메서드를 사용하여 에너미 객체를 꺼냄. ▶ 우선 플레이어가 Empty Object의 Trigger에 접근했을 때 에너미가 하나씩 스폰되도록 구현하였다.1. Scene에서맵에 NavMesh Surface를 생성하여 Object Collection - Collect Objects를 Volume으로 설정하고 크기를 조절해준다.조절된 이 필드에서만 에너미가 스폰되도록 할 것이다. 플레이어가 트..

[Unity] 에너미 넉백(KnockBack) 효과 보완 및 파티클 이벤트 적용

[Unity] Animator를 사용한 플레이어 조작 및 Raycast를 사용한 Knockback 효과 구현[Unity] Animator를 사용한 플레이어 조작 및 Raycast를 사용한 Knockback 효과 구현 이전에 멈춰두었던 프로젝트를 다시 잡았다. 인트로 씬부터 다시 플레이 해 보았는데, 뜯어 고칠게 한 두개가shin0624.tistory.com이전에 구현한 에너미 넉백(Knockback) 효과를 보완하고, 공격 시 플레이어의 무기에서 파티클 효과가 발생하도록 구현해보았다. 1. 넉백 효과우선 공격 시 에너미가 넉백되는 효과를 Goblin 이외에 다른 에너미들을 구현할 때 재사용하기 쉽도록 interface를 생성하고, 이 인터페이스를 상속받은 BaseHitHandler 추상 클래스를 생성하여..

[Unity] Animator를 사용한 플레이어 조작 및 Raycast를 사용한 Knockback 효과 구현

[Unity] Animator를 사용한 플레이어 조작 및 Raycast를 사용한 Knockback 효과 구현 이전에 멈춰두었던 프로젝트를 다시 잡았다. 인트로 씬부터 다시 플레이 해 보았는데, 뜯어 고칠게 한 두개가 아니었다. 우선 Animator의 Transition도 제대로 연결이 안되어 있었고, 블렌딩도 하다 말았는지 클립 전환이 매우 어색했다. Animator의 Transition부터 제대로 연결해 주었다. 플레이어가 어떤 상태에 있던 다음에 의도한 동작으로 전환될 수 있도록 클립과 클립 간 양방향으로 Transition을 이어주고, 각 Transition마다 Has Exit Time 체크는 해제한다. 또한 Transition Duration은 0.1로 해준다. 플레이어의 상태 변수는 Define..

[Unity] A* 알고리즘, NavMesh 시스템을 사용한 에너미 AI

게임 내 일반 몬스터의 AI를 A*알고리즘으로 구현 2024.09.08 - [UnityPortfolio/[Studio Chosun]Heresis] - DFS를 사용한 에너미 AI DFS를 사용한 에너미 AI게임 내 일반 몬스터의 AI를 구현개발 중(미완성)사용 기술AI Navigation 패키지AnimatorDFS주요 기능상태 관리 : Define.EnemyState 열거체에 에너미의 상태를 정의. Trigger를 설정하여 상태를 전환.탐색 : DFSshin0624.tistory.com이전에 DFS를 사용하여 에너미 AI를 구현한 적이 있었는데, 맵의 복층구조, 장애물 등의 특성 때문에 불확실한 경로 탐색, 비효율적인 상태 전환이 두드러졌다.가장 두드러지게 보이는 문제는 경로 탐색에서 보였는데, Vect..

[Unity] 랜덤한 배경 이미지와 프로그레스 바를 사용한 비동기 로딩 씬 제작

팀 프로젝트로 개발 중인 게임에서, Scene 전환 시 출력되는 Loading Scene을 수정하자는 의견이 나왔다.수정 제안 사항은 아래와 같았다.1. 프로그레스 바 변경2. 로딩 씬 배경을 게임 내 맵 이미지로 변경 기존 로딩씬은 Spinner 애니메이션만 배치해서 단조로운 감이 있었는데, 이번 기회에 수정해보기로 한다.1. 프로그레스 바 변경을 위해 비동기 씬 로드 코루틴을 수정하도록 한다.public class LoadingSceneManager : MonoBehaviour{ [SerializeField] private Image Progress;//로딩 바 이미지 public static string nextScene;//다음 씬 이름 void Start() ..