UE5
![c++ const 매개변수 , 아웃매개변수](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv5lT9%2FbtstxmhsjbY%2FDI6zrOWsV7IS4dGxfkvgr0%2Fimg.png)
c++ const 매개변수 , 아웃매개변수
1. const 매개변수 단점 : 함수내부에서 데미지 수정시 원본데미지의 값도 바뀌어버림 해결 : const // 함수내부에서는 조회만 가능토록 제한. 2. 아웃매개변수 특징 : float&인데 const가 안붙어있음, 매개변수이름이 Out변수명임. 변수초기화를 안하고 함수에 넘김 왜사용? : 함수내부에서 값을 넣어주기를 원하는 경우
![c++ & 참조타입 vs *포인터 비교](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaMQ6x%2FbtstxizhqBj%2FdjvPuV1ywggQ4wOG7910EK%2Fimg.png)
c++ & 참조타입 vs *포인터 비교
1. 참조타입은 일종의 별명이다. a의 별칭을 another_a 라고 지은것. a가바뀌면 another_a도 바뀜. float a = 3; float& anohter_a = a; UE_LOG(LogTemp, Display, TEXT("a is %f another_a is %f"), a, anohter_a); 2. 포인터 : 여러곳에서 참조해야되는 경우에만 사용 참조타입 : 널불가능 => 안전성 up 웬만하면 참조타입을 사용하라.
![언리얼엔진 트레이스 디버깅용 빨간선 찍는방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtWeDv%2FbtstM0wyqkh%2FsOQMFES3pPe7Cf3899Hc5K%2Fimg.png)
언리얼엔진 트레이스 디버깅용 빨간선 찍는방법
0. 트레이스란? 그림과 같이 물체등을 추적 => 플레이어가 뭘 가르키고 있는지 추적한다. 종류 : 라인, 원형, 트레이스채널(추적가능한 오브젝트목록 등록, 그것만 추적 / 나머지는 무시함) 등. 1.Grabber cpp만들고 2. BP_Player의 카메라에 달아준다. FVector Start=GetComponentLocation(); FVector End= Start +GetForwardVector()*MaxGrabDistance; DrawDebugLine(GetWorld(), Start, End, FColor::Red); 3.실행결과 F8을 눌러 빙의를 풀어야 빨간선이 보인다.
![c++ -> 연산자 사용방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDBohl%2FbtstKXHbGGy%2F6qtTNPgUoPX4JPAJQGw1T1%2Fimg.png)
c++ -> 연산자 사용방법
*예시1 (*Owner).멤버함수 를 간소화한것이 -> 연산자이다. Owner -> 멤버함수 //위와동일 //이 cpp 파일의 주인인 Actor의 주소 가져오기 AActor* Owner = GetOwner(); //같은코드임. //1. Owner의 주소를 타고가서 (*Owner) //2. 실제객체의 맴버함수실행 FString Name=(*Owner).GetActorNameOrLabel(); FString Name2 = Owner->GetActorNameOrLabel(); UE_LOG(LogTemp, Display, TEXT("Mover Onwer Address : %s"), *Name2); * 예시2 //이 cpp 파일의 주인인 Actor의 주소 가져오기 AActor* Owner = GetOwner();..
언리얼 엔진 로그찍는방법
1. UE_LOG(카테고리, 심각도, 텍스트) 2. 문자열 변수 저장은 FString을 이용하면된다. 주의 : 접근시 변수앞에 *을 붙여야됨. 포인트 형식으로 저장되는 듯 하다. 3. 예시 float OverShoot = DistanceMoved - MoveLimit; FString Name = GetName(); UE_LOG(LogTemp, Display, TEXT("%s Platform overshooted by %f"),*Name, OverShoot);
![언리얼엔진에서 캐릭터 충돌 인식버그 해결방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbylOWF%2FbtstktOsbDJ%2FXSNI33Ii7iPdNaeVqx6eyk%2Fimg.png)
언리얼엔진에서 캐릭터 충돌 인식버그 해결방법
1. 문제 : 언리얼에서는 움직이는 캐릭터만 충돌감지를한다. => 정지한 캐릭터와 물체가 겹치면 버그발생 (보기안좋고 어지럽다) 2.해결 : 캐릭터 블루프린트에서 +1이동, -1이동을 주면 -> 위치는 그대로이고 계속이동중이다. Sweep체크 => 충돌감지 On 3. 문제2 : 회전방향이 없어서 캐릭터가 정면만 바라본다 4. 해결 2: get actor rotation을 받아서 주면된다.
![아이템 줍기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7x0hA%2FbtrJQdHme1m%2FGkXkIUKDbmPJQ6rIwLl97K%2Fimg.png)
아이템 줍기
* 구현 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"..