분류 전체보기

    2839번: 설탕배달

    https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 1.최대사용가능 5의 수 구하기 == 기준 2. 사용가능5의 갯수를 1씩 줄여가며 최대~0까지 반복 - 함수 1.사용한5만큼 N에서 빼줌 2. 나머지가지고 3씩빼면서 카운트++ 3. N이 0이면 가능한것임. possible=true, 정답갱신 - 출력 1. possibe? : answer : -1 import java.io.BufferedReader; import java.io.IOException; imp..

    스탯 매니저

    * 구현 1.MyGameInstance.cpp->GameInstance 만들기

    아이템 줍기

    아이템 줍기

    * 구현 1. 줍줍할수 있는애들 MyCollective 엔진-콜리전-새 오브젝트, 새 프로파일 캐릭터랑만 겹침판정 => 겹치면 이벤트 발생 캐릭터에서도 겹칩설정해주기 2. MyWeapon-> 트리거변수 => 충돌영역지정 박스 ※캐릭터->줍기부분 주석처리 트리거는 UBoxComponent 타입임 AMyWeapon::AMyWeapon() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; //3.무기 만들어줌 Weapon = CreateDefaultSubobject(TEXT("WEAPON"..

    소켓 실습

    소켓 실습

    소켓 => RPG게임 무기변경 * 구현 1.BPCharacter::Mesh->Skeletal Mesh->Hand_l에 소켓추가 => 코드상에서 찾아서 매쉬 추가가능 2.캐릭터->생성자 //1. hand_l_socket을 찾아옴 FName WeaponSocket(TEXT("hand_l_socket")); if (GetMesh()->DoesSocketExist(WeaponSocket)) { //3.무기 만들어줌 Weapon = CreateDefaultSubobject(TEXT("WEAPON")); //2.경로에가서 매쉬찾아옴, SW에 저장 static ConstructorHelpers::FObjectFinderSW(TEXT("StaticMesh'/Game/ParagonGreystone/FX/Meshes/He..

    충돌 기초

    충돌 기초

    * 콜리전 반응 종류 무시: 충돌X 겹침 : 충돌O, 지나가짐O ex)메이플 포탈 불록 : 충돌O, 지나가짐X * 충돌 구현 3. Preset에서 위부터 각각 MyCharacter를 Pawn 설정과 동일하게 설정. 4.BP_Mycharacter::캡슐::콜리전= MyCharacter 5.컴파일, 저장 * Attack 충돌시 할일 구현 1.엔진-콜리전-새 트레이스채널=Attack 추가 2.애님인스턴스에 변수추가 DECLARE_MULTICAST_DELEGATE(FOnAttackHit); public: FOnAttackHit OnAttackHit; 3. 브로드캐스트 때리기(리스너 패턴) Broadcast(c:소문자) void UMyAnimInstance::AnimNotify_AttackHit() { //UE_..

    블렌드 스페이스

    블렌드 스페이스

    * 블렌드 스페이스 기존 : 앞으로가는 애니메이션만 존재, 좌로걸을떄, 뒤로걸을떄??? 해결1 : if-else 중첩.. (-) 복잡 해결2: 블렌드 스페이스 => 여러 애니메이션 합치기. 여러 애니메이션 구분 편하게 - 구현 1. 애니메이선::블렌드스페이스 생성 (이름:BS_Move) 2. Horizontal, Vertical 이름설정 3.Left,Right,Up,Down 애니메이션 하얀점 위치에 넣기 && 값범위설정(-1~1) 4. 애니메이션블루프린트::Speed>0 포즈교체 5.캐릭터::새변수 => 움직일때 Value 저장 =>애님인스턴스에서 사용 => BP에 전달 void AMyCharacter::UpDown(float Value) { //if (Value == 0.f) return; //UE_L..

    애니메이션 노티파이

    애니메이션 노티파이

    * 애니메이션 노티파이 : ex) 칼을 휘두룰때 특정 시점에 소리가나도록 directX : 시간을 재면서 특정시간경과 -> 소리재생 ... 언리얼 : 노티파이 => 알림을 보내는 방식 * 구현 1. 몽타주 블루프린트 :: 새 노티파이를 소리재생원하는 위치에 두기 2. 애님인스턴스 :: 함수추가, 할일추가(사운드, 로그 ...) private: UFUNCTION() void AnimNotify_AttackHit(); 함수이름을 맞춰줘야함. AnimNotify_내가정한 노티파이이름() void UMyAnimInstance::AnimNotify_AttackHit() { UE_LOG(LogTemp, Log, TEXT("AnimNotify_AttackHit")); } * 몽타주를 평타모션3개로 나눠 순차실행 구현..

    델레게이트

    * 델레게이트 : 함수가 끝날때 호출되는 함수 기존코드 : 캐릭터::Attack함수에서 애님인스턴스를 찾아, 애님인스턴스에서 몽타주를 실행 (-) : 느림. 반복적. 불필요. 성능down 개선 : 캐릭터에 IsAttatking 맴버변수, 공격중일때는 바로리턴 => 불필요호출X 델레게이트 => Attack함수 끝나면 isAttaking을 false로. - 구현 1. 애님인스턴스 호출전에 IsAttacking 검사 void AMyCharacter::Attack() { //델레게이트 if (IsAttaking) return; Animinstance->PlayAttackMontage(); } 2. 몽타주가끝나면 OnAttackMontageEnded함수를 실행하라. UFUNCTION() void OnAttackM..