분류 전체보기 280

간단한 2D RPG 프로젝트 - (3) MonsterController

이번에는 몬스터를 위한 MonsterController를 만들어보겠습니다.플레이어의 경우 플레이어가 직접 조작하므로 챙겨야 할 것이 많지만몬스터의 경우 코드를 통해 이를 자동화하여 제어하는 것이 가능합니다.이때 MonsterController 역시 BaseController에서 상속되었으므로 일부 기능은 동일하게 수행합니다. 간단한 프로젝트이므로 몬스터에서 Animation 처리는 생략하고 대신각각의 애니메이션에 대한 처리를 로그로서 남기도록 하겠습니다. 1) MonsterControllerusing System.Collections;using System.Collections.Generic;using UnityEngine;public class MonsterController : BaseControll..

간단한 2D RPG 프로젝트 - (2) PlayerController

이번에는 BaseController에서 파생된 PlayerController를 만들어보겠습니다.코드 자체는 매우 간단하고 개선할 부분이 매우 많으므로프로젝트에 완전히 적용하기에는 무리가 있다는 점을 알아주셨으면 좋겠습니다. 1) Animator플레이어는 많은 애니메이션을 사용합니다.이번 프로젝트에서는 총 6개의 애니메이션을 사용합니다.우선 Animator의 구성을 먼저 확인해보겠습니다.  움직이지 않는 상태의 KnightIdle, 기본 이동 상태의 KnightMove, 대시 이동 상태의 KnightDash점프하고 떨어지는 상태의 JumpFall, 그리고 콤보 공격에 따라 수행되는 KnightAttack1,2,3이 있습니다. 위의 애니메이션들의 전환은 다음과 같이 정리할 수 있습니다.KnightAttack..

간단한 2D RPG 프로젝트 - (1) BaseController

이번 포스트에서는 유니티 엔진을 사용하여 간단한 2D RPG의 구성요소를 만들어보겠습니다.2D는 기본적으로 3D에 비해 구성이나 설계가 단순하기에 부담없이 사용할 수 있는 코드로 구성해보았습니다. 1) BaseControllerRPG게임에는 플레이어가 조종하는 캐릭터와 그렇지 않은 캐릭터가 존재합니다.그러나 2개의 요소 모두 공통적인 기능을 수행해야 하는 경우가 있습니다.이런 상황에서 상속을 통해 공통적인 기능은 부모가, 개별적인 기능을 따로 구현하는 것이 좋습니다.따라서 부모의 역할을 수행하는 BaseController를 만들어보겠습니다. using System.Collections;using System.Collections.Generic;using UnityEngine;public class Bas..

문자열 처리

파이썬에서는 객체를 문자열로 반환하는 2가지 함수가 존재합니다.하나는 str() 이고, 다른 하나는 repr() 입니다.이번 포스트에서는 두 함수의 차이를 알아보고 어떻게 사용되는지도 알아보겠습니다. 1) str() 함수str() 함수는 객체를 시스템이 아닌 사용자를 위한 문자열로 반환합니다.주로 사용자가 보기쉽게 문자열을 반환하기 위해 사용합니다. 2) repr() 함수repr() 함수는 객체를 사용자가 아닌 시스템을 위한 문자열로 반환합니다.주로 객체를 문자열로 다시 생성하기 위해 사용합니다. 이렇게 놓고 보면 선뜻 이해가 가지 않지만예제로 보게 되면 이해가 될 것이라 생각합니다. 바로 예제로 넘어가보겠습니다. 3) str()과 repr() 예제import datetimea = 123print(str..

Python 2024.11.19

외부 라이브러리

이번 포스트에서는 외부 라이브러리를 다루는 방법에 대해 알아보겠습니다.외부 라이브러리를 다루는 경우에는 2가지 방법으로 나뉘게 되는데,파이썬을 어떤 방식으로 사용하는지로 나뉘게 됩니다. 1) 외부 IDE를 사용제가 사용하는 Pycharm으로 외부 라이브러리를 다루는 방법을 알아보겠습니다. 상단의 패널에서 File -> Settings -> Project -> Python Interpreter로 이동하여 프로젝트에 사용할외부 라이브러리를 설치하거나 삭제할 수 있습니다.  2) pip를 이용하여 설치IDE에서 외부 라이브러리를 설치할 때도 기본적으로 pip 라이브러리를 사용하여 설치해야 합니다.이는 IDE를 사용하지 않고 cmd를 통해 외부 라이브러리를 설치할 때도 동일합니다. cmd를 관리자 권한으로 실행..

Python 2024.11.18

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (6) Enemy와 Player에서 ASC와 AS 설정하기

이제 적과 플레이어 클래스에서 ASC와 AS를 설정해보겠습니다. 1) AAuraBaseCharacter에서 상속된 적 클래스 AAuraEnemy#pragma once#include "CoreMinimal.h"#include "Character/AuraCharacterBase.h"#include "Interface/EnemyInterface.h"#include "AuraEnemy.generated.h"/** * */UCLASS()class AURA_API AAuraEnemy : public AAuraCharacterBase, public IEnemyInterface{ GENERATED_BODY()public: AAuraEnemy(); virtual void BeginPlay() override; prot..

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (5-1) ReplicationMode와 InitActorInfo 함수

Replication Mode는 언리얼 엔진에서 서버가 클라이언트를 업데이트하는 방식을 정의합니다.함수 SetReplicationMode를 통해 이 방식을 결정할 수 있고,인자는 구조체 EGameplayEffectReplicationMode의 멤버를 사용합니다. 1) EGameplayEffectReplicationMode이 구조체의 멤버는 총 3가지로 구분할 수 있습니다.이는 설명드리기보다는 그림으로서 한번에 보는 것이 나을 것이라 생각합니다.  위와 같이 정리할 수 있습니다.프로젝트에 이를 적용해보면AuraPlayerState의 ASC는 플레이어가 조종하므로 Mixed를 적용하면 될 것이고,AuraEnemy의 ASC는 AI가 조종하므로 Minimal을 적용하면 될 것입니다. 2) InitActorInf..

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (5) BaseCharacter와 PlayerState에 AbilitySystemComponent와 AttributeSet 추가하기

이번 포스트에서는 본격적으로 GAS 프레임워크를 사용해보겠습니다.우선적으로 GAS를 사용할 수 있게 해주는 Ability System Component와GAS에서 사용할 데이터들을 모아놓은 Attribute Set을 추가해주겠습니다. 1) 선행작업먼저 GAS 프레임워크를 사용하기 위해서는 선행작업이 필요합니다.우선적으로 Gameplay Ability 플러그인을 활성화해야 합니다.  두번째로 프로젝트.build.cs에 플러그인들을 추가해야 합니다.  선행작업이 완료되었다면 2개의 클래스를 생성합니다.UAbilitySystemComponent에서 상속된 UAuraAbilitySystemComponent 클래스와UAttributeSet에서 상속된 UAuraAttributeSet 클래스를 생성하였습니다.아직 2..

Closure와 Decorator

이번 포스트에서는 클로저와 데코레이터에 대해 알아보겠습니다. 1) 클로저와 데코레이터란?클로저는 함수안에서 함수를 반환하는 경우에, 반환되는 함수를 일컫는 말입니다.주로 재귀함수나 함수를 순차적으로 실행하는 경우에 사용할 수 있는데이를 통해 재사용성이 높은 함수 구조를 만들 수 있습니다. 데코레이터는 함수를 확장하는 함수로서 @ 기호를 사용하여 어노테이션으로 사용할 수 있습니다.주로 반복되는 작업을 여러 함수에 적용하는 경우나 또는기존 함수를 수정하지 않고 추가구현하는 경우에 사용이 가능합니다. 이제 예제를 통해 클로저와 데코레이터를 사용해보겠습니다. 2) 클로저의 예제클로저를 통해 간단한 곱셈을 수행하는 함수를 만들어보겠습니다.def Mul(m): def closure(n): retu..

Python 2024.11.17

인코딩과 디코딩

이번 포스트에서는 파이썬을 통한 인코딩과 디코딩을 알아보겠습니다. 1) 인코딩과 디코딩이란?우선 인코딩과 디코딩이 무엇인지 알아보겠습니다.인코딩은 사람이 인지할 수 있는 형태의 데이터를 컴퓨터가 이해할 수 있는 형태로 변환하는 것을 의미합니다.인코딩은 다른 말로 코드화, 암호화, 부호화 등으로 표현할 수 있습니다. 디코딩은 인코딩과는 반대로 동작합니다.컴퓨터가 이해할 수 있는 형태에서 사람이 인지할 수 있는 형태로 변환하는 것을 의미합니다.다른 말로 역코드화, 복호화 등으로 표현할 수 있습니다. 이때 인코딩과 디코딩의 방식은 같은 방식으로 이뤄져야 합니다.만약, 인코딩을 UTF-8 방식으로 진행했다면 디코딩 역시 UTF-8 방식으로 진행해야 합니다.이제 예제를 통해 파이썬에서 인코딩과 디코딩이 어떻게 이..

Python 2024.11.16