일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- two pointer
- MYSQL
- Brute Force
- Dijkstra
- DP
- binary search
- Stored Procedure
- union find
- Hash
- SQL
- 그래프
- 이진탐색
- 다익스트라
- Two Points
- 스토어드 프로시저
- String
- Trie
- Today
- Total
목록분류 전체보기 (418)
codingfarm
이젠 내리막길을 따라 내려가도록 해보자 사실 지금까지의 프로젝트에서도 각도가 낮은 내리막길에 대해서는 길을따라 내려가는듯이 보인다. 하지만 경사가 심해지면 캐릭터가 허공에 뜨는듯한 모습을 볼 수 있다. 이를 해결하기 위한 추가적인 조치를 하겠다 우선 Controller2D의 Move함수 내부를 확인하자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public void Move(Vector3 velocity) { UpdateRaycastOrigins (); collisions.Reset (); collisions.velocityOld = velocity; if (velocity.y
한번도 해본적은 없지만 도트이미지가 맘에들어서 구경했던 게임입니다. 오랜만에 소식을 찾아보니 서버종료했더군요 그래도 이미지 파일들 퀼리티가 좋아서 2d게임 만들때 더미데이터로 쓰기위해 다 다운받으려 했습니다. https://bagoum.com/cardsort Card Sorting bagoum.com 몇몇 사이트가 있었지만 위 사이트가 모든 카드 정보들이 일렬로 나열되 있어서 접근성이 좋았습니다. 게임상에 있는 모든 카드가 다 있는건지는 모르겠지만 파이썬을 이용해 사이트에 있는 모든 카드를 다운받도록 했습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 4..
지금까지 만든 이동코드는 평지를 이동하는데엔 아무 이상도 없다. 하지만 오르막길을 오를때는 이동이 불가능할 정도로 속도가 급격히 떨어지는것을 확인 할 수 있다. 문제 해결을 위해선 원인을 알아야한다. 먼저 캐릭터가 이동하는 순간의 모습을 캡처해보자 이동방향으로 horizontalRayCount개의 ray가 생성되어 해당 프레임동안 캐릭터의 이동 거리(velocity.x + deltaTime)에 skinWidth를 더한 길이만큼의 범위내에서 장애물을 감지하는 방식이다. ray자체가 skinWidth만큼 캐릭터의 테두리로부터 안쪽에서 발사되는 방식이기에 아주작은 턱은 넘지 못하는 모습을 볼 수 있다. 이와 마찬가지로 경사가 매우 낮다면 ray가 장애물을 감지 할 수 없으므로 큰 어려움 없이 지나갈 수 있을것..
보호되어 있는 글입니다.
우클릭을 통해 발차기 기능을 추가해보자 발차기는 주먹과 다른 애니메이션 몽타주로 재생되며 주먹과는 달리 공격중 이동이 불가능하다. 우선 애니메이션 몽타주를 만들고 섹션을 형성해준다. 메쉬 스켈레톤에는 주먹 뿐만아니라 발끝에도 소켓을 추가한다. 이제 입력 메커니즘을 수정하자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 void APunchKick06Character::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) { // Set up game play key bindings check(PlayerInputComponent); P..
캐릭터가 주먹을 휘두르고 타격하는 소리가 나도록 해보자 1 2 3 4 5 6 7 8 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = Audio, meta = (AllowPrivateAccess = "true")) class USoundCue* PunchSoundCue; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = Audio, meta = (AllowPrivateAccess = "true")) class USoundCue* PunchThrowSoundCue; UAudioComponent* PunchThrowAudioComponent; UAudioComponent* PunchAudioCompon..
각 액터가 서로 충돌이 발생했을때에 이벤트가 발생하는 방법에 대해 알아보겠다. 앞서 우리는 클릭과 함께 주먹을 휘두르고 박스가 이에 반응하도록 프로젝트를 구성했으며 여기서부터 이어나가겠다. 먼저 주먹이 충돌했을때 호출될 아래와같은 이벤트 함수의 원형을 헤더파일에 넣는다. 1 2 UFUNCTION() void OnAttackHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit); cs 이벤트가 될 함수는 반드시 UFUNCTION() 데코를 설정해주어야한다. 함수 정의는 아래와 같으며 지금은 충돌 감지가 잘 되는지 확인하..
주먹으로 적을 타격하는 게임을 만든다 할때 제일 이상적인 방법은 캐릭터의 주먹에 충격을 감지할 collider를 만들고 애니메이션 재생시에 collider에 들어온 적에게 피격 이벤트를 발생시키는것이다. 이때 모델의 주먹에 collider 를 추가하기 위해서 스켈레톤 소켓을 사용할 수 있다. Hand_L과 Hand_R 하위에 소켓을 추가해주고, 적당한 위치를 정한다. 그리고 소켓의 위치에 Box Collider Component를 추가해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 class APunchKick02Character : public ACharacte..
https://docs.unrealengine.com/ko/Engine/Animation/AnimMontage/Overview/index.html 애니메이션 몽타주 개요 애니메이션 몽타주 애셋 작업 방식과 어디에 사용할 수 있는지에 대한 설명입니다. docs.unrealengine.com 여러 애니메이션 시퀀스를 하나의 애니메이션 에셋에 합칠수 있으며 이를 여러 섹션으로 나누어 원하는 구간에 대해서만 그리고 조합하여 재생이 가능하게끔 한다. 가령 하반신은 걷거나 뛰고 있는데 상반신은 총기 조준을 하거나, 재장전, 방패막기 등 상반신과 하반신에 별개의 애니메이션을 주는것이 가능해진다. 상반신과 하반신 애니메이션 따로 재생하기 하반신은 이동에 맞추어 걷지만 상반신은 공격하는 애니메이션을 짜보자 1 2 3 4..
애니메이션 에셋이 주어젔을때 skeleton이 다르면 자신의 모델에 적용이 불가능하다. 하지만 애님 에셋 리타게팅으로 해결 가능하다. 호환 스켈레톤만 표시를 해제해주고 오른쪽에서 원하는 스켈레톤을 선택한다.
actor의 GetVelocity() 함수를 이용하면 이동중인 방향을 알 수 있으나 world 좌표계 기준이다. 그러므로 이 좌표를 local 좌표를 기준으로 얻을 수 있어야 한다. 원리는 간단하다. 우선 GetActorRotation().Vector()로 액터가 바라보는 방향을 구한다. FMath::Atan2(vector.Y, vector.X) 함수를 이용해서 방향벡터를 각도로 변환한다. 그리고 아래식을 참고하여 벡터 회전 변환을 실시한다 $$x'=x\cos\theta-y\sin\theta\\ y'=x\sin\theta+y\cos\theta$$ 언리얼에서는 정면이 X축, 오른쪽이 Y축임을 주의하고 코드를 작성하면 된다. 아래 코드는 캐릭터가 이동중인 방향벡터를 월드좌표계에서 로컬좌표계로 변환하는 코드이..
https://docs.unrealengine.com/en-US/API/Runtime/Engine/Engine/UEngine/AddOnScreenDebugMessage/1/index.html https://developstudy.tistory.com/40?category=783182 1 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("%f, %f"), 15.0, 5.0)); cs
https://docs.unrealengine.com/ko/Gameplay/HowTo/UsingCameras/SpringArmComponents/index.html 스프링 암 컴포넌트 사용법 Spring Arm 컴포넌트는 카메라 시야가 막히는 상황을 자동으로 처리하는 데 사용됩니다. docs.unrealengine.com 주로 카메라 컴포넌트의 부모로 설정하여 게임상에서 카메라의 위치를 편리하게 설정할 수 있게끔 한다. 주로 3인칭 게임을 만들때에 장애물에 따라 카메라의 위치를 늘였다 줄였다 하는데에 편리하게 쓰인다. Target Arm Length spring의 상위에 붙은 타겟과 하위에 붙은 카메라 사이의 거리를 설정한다 Socket Offset 스프링 암 끝의 카메라의 위치를 조정한다. 이 상대 오..
https://www.youtube.com/watch?v=LsNW4FPHuZE 위 강좌에 나오는 내용을 정리한 포스팅이다. 시간이 지날수록 하단의 게이지가 차오르며 가득차면 캐릭터가 사망하면서 게임오버 된다 이를 늦취 위해 맵에 랜덤으로 리젠되는 오브젝트를 획득하는 게임이다. 캐릭터이동에 관한 기본 베이스는 언리얼에서 예제 프로젝트로 제공되는 3인칭 게임에 두고있다.
천장 부분을 렌더링 하기 위한 함수이다. 방의 크기에 맞춰서 천장 파츠를 이어 붙여야 하므로 RoomSize 횟수 만큼 반복문을 돌려줘야한다. 몇번째 방인지(index), 방의 크기가 어느정도인지(RoomSize), 방의 시작위치가 어디인지(offset)의 정보들을 이용해서 각각의 천장 파츠가 와야할 위치를 MakeTransform으로 만든다. 그리고 Static mesh Component를 이용하여 해당위치에 천장 mesh를 만든다. RoomType에 설정된 값에 따라 천장의 타입이 결정되게끔 한다. 그리고 앞서 만들어진 transform에 추가된 static mesh component에 알맞은 mesh를 적용시킨다. roomtype이 너무 작다면 나머지 천장의 타입은 자동으로 결정 되게끔 한다. Sw..
RoomNames 문자열 타입의 배열에 문자열을 입력하면 그에 맞춰 각 방에 이름을 표시한다 가령 위와 같이 문자열을 설정하면 first room 이라는 이름이 각 방의 벽면에 렌더링 됨을 확인 할 수 있다. 이를 구현하는 블루프린트를 확인하자. 함수 시작점부터 살펴보겠다. 스크립트의 흐름에 따라 바로 다음 순서를 보자 "Text location at the begnning of each room" 각 방의 시작점에 텍스트를 위치시킨다. 텍스트가 형성될 좌표를 찾는 과정이다. X : 매개변수 offset으로 전달받은 위치 Y,Z : 직접 입력 이렇게 얻은 좌표를 기반으로 transform을 형성하고 이를 기반으로 Text Render Component를 추가한다. 이때 상대좌표를 사용함을 명심하라 방의 ..
RoomNames 문자열 타입의 배열에 문자열을 입력하면 그에 맞춰 각 방에 이름을 표시한다 가령 위와 같이 문자열을 설정하면 first room 이라는 이름이 각 방의 벽면에 렌더링 됨을 확인 할 수 있다. 이를 구현하는 블루프린트를 확인하자. 함수 시작점부터 살펴보겠다. 스크립트의 흐름에 따라 바로 다음 순서를 보자 "Text location at the begnning of each room" 각 방의 시작점에 텍스트를 위치시킨다. 텍스트가 형성될 좌표를 찾는 과정이다. X : 매개변수 offset으로 전달받은 위치 Y,Z : 직접 입력 이렇게 얻은 좌표를 기반으로 transform을 형성하고 이를 기반으로 Text Render Component를 추가한다. 이때 상대좌표를 사용함을 명심하라 방의 ..
해당 프로젝트에서 여러 컨텐츠를 보이기 위한 공간이다. 블루프린트로 기능이 작성되어있으며 아래에서 주요 기능을 확인하자. Construction Script 0과 1이라는 분기점이 2개가 형성된다 먼저 0 분기점으로 가보자 "ThisRoomSize" 라는 정수형 변수를 0으로 만든다. "OffsetList" 라는 실수형 배열을 clear 한다. "RoomSizes"라는 정수형 배열을 clear 한다. 사실상 변수들을 초기화 시키는 작업을 수행한다 볼 수 있다. 이제 분기점 1로 가보자. 상당히 큰 규모지만 차근차근 살펴본다 우선 NumberofRooms 정수형 변수의 값을 최소1, 최대30의 값으로 한정짓는다. 이 NumberofRooms는 방이 연달아 몇개까지 있는지를 결정짓는 요소이다. 즉, 연달아 ..
https://www.daz3d.com/easy-modeling-and-morphing-with-blender Easy Modeling And Morphing With Blender | 3D Models and 3D Software by Daz 3D This product includes: The content of the video files is the same as the paper version, with, in addition for the video files, how to make texture painting in Blender and how to split a morph in several morphs. In the product you will also file a second pd w..
클래스 다이어그램(class diagram) $\bullet$ 시스템의 클래스와 이들 상호 간의 관계, 그리고 클래스의 오퍼레이션과 애트리뷰트를 표현한다 $\bullet$ 논리 설계 시 분석 클래스 모델링과 물리 선계시 구현 클래스 모델링을 포함한 다양한 목적에 사용된다. 구성요소(compartment) $\bullet$ 클래스 명 $\bullet$ 애트리뷰트 -애트리뷰트명 : 데이터타입 $\bullet$ 오퍼레이션 - 오퍼레이션명(매개변수명 : 매개변수타입) : 반환타입 가시성(visibility) $\bullet$ private : - $\bullet$ protected : # $\bullet$ public : + $\bullet$ package : ~ 예) 자동차 인터페이스(interface) 구성..