ACK, 베이직 분반, 팀프로젝트


map을 사용한 풀이법(우측)
약간의 비효율(점수를 순회하여 찾은 후 추가하므로)을 가지고는 있지만 크게 문제가 되지는 않는 풀이법
==========
베이직 분반
Axis
Digit (boolean) bool x
Axis1D (float) float x
Axis2D (Vector2D) float x, y;
Axis3D (Vector) float x, y, z;
키보드 입력 -> Digit 누르거나(1) 안 누르거나(0) - 이 값을 변환시켜주는 내용이 모디파이어
마우스 좌표 -> Axis2D 마우스 좌표 (screen space, 화면 공간) x, y
모디파이어가 없다면 입력은 X(1), Y(0) / X(0), Y(0) 의 값만 계속해서 들어온다.
선 전제
앞 뒤를 X축에 놓고 오 왼을 Y축으로 사용한다.
- X(0), Y(0)은 미 입력이므로 필요하지 않음.
W - X(1), Y(0) ->Modifier필요 없음
S - X(-1), Y(0) -> Modifier 음수 전환 필요 -> Negate
D - X(0), Y(1) -> Modifier로 X축과 Y축의 전환이 필요함 -> swizzle(yxz)
A - X(0), Y(-1) -> Modifer로 X축과 Y축의 전환과 음수 전환 필요 -> swizzle(yxz) + Negate
-> 사전 Negate와 이후 Negate 일 때 바꿔줘야 하는 값이 달라질 수 있다. (만약 핀 포인트로 특정 값만 Negate한다면)
(물론 그냥 다 변환 때려버리면 해결되긴 함)
충돌과 관련된 Normal Vector는 피격자의 표면에서 수직 방향이다.
==========
부모에서 이미 체크하고 있는 사항 적용하고 있는 사항은 다시 확인/변경 해주지 않는 것이 더 좋다.
(if (!CanActivate()) return; /CurrentCoolTime = SkillCoolTime; - 이미 부모에서 해결해주는 부분)
ue/c++ grenade error 6 GrenadeSkill(void) 가 Module.Project.cpp.obj에 이미 정의되어 있습니다.
라는 구문의 오류문구를 포함해서 3개가 생김 잘못 사용한 내용은 전부 확인했으므로 파일 생성 자체에서 오류가 발생한 것으로 추정됨
Saved/Intermediate/binaries를 삭제 후 Generate함
이래도 해결안됨 - 올바른 해결방법들은 아니었다.
===
코드 리뷰
인덴트를 줄이는 방향으로 코드를 짜는 것이 좋다. ( depth와 유사한 개념)
if (체크) { if (체크) { 동작구문 }}} 이렇게 과하게 들어가는 경우 예외처리로 빼버리는 방향으로 코드를 작성하면
if (function == nullptr) return;
if (체크)
{
동작 구문
}
이렇게 정돈되고 우측으로 코드가 밀려서 보기 불편해지는 상황을 막을 수 있다.
WaveManager에서 index체크가 부족한 구문이 하나 있다. - 이번 내용과 합쳐서 예외 처리 구문을 추가하면 되겠다.
bool <-> Try
스마트 포인터만 보다 잘 활용하면 좋겠다.
===
파생 함수라고 생성자를 .h에서 선언하지 않고 그대로 사용해서 생긴 링크 오류였다..
UE로 넘어와서 사용한 생성자들이 대부분 UE자체에서 이미 선언해둔 상태로 생성되서 빼먹은 모양이다.
grenade(수류탄) 투척 스킬을 하나 구현하기 위해서 ProjectileBase - GrenadeProjectile 까지 구현하고 디테일을 손봐야 하는 바람에 당일에 전부 구현하는데 실패했다.
폭발 데미지 판정용 구는 새로 생성했으니 저번 지뢰와 유사하게 동작하도록 만들면 될 듯 하다.
'TIL' 카테고리의 다른 글
| 26.02.23일자 - TIL (0) | 2026.02.23 |
|---|---|
| 26.02.20일자 - TIL (0) | 2026.02.20 |
| 26.02.13일자 - TIL (1) | 2026.02.13 |
| 26.02.12일자 - TIL (0) | 2026.02.12 |
| 26.02.11일자 - TIL (0) | 2026.02.11 |