공부 정리/API 프로젝트 (별의 커비) 콘텐츠
3. Actor(Monster) - Monster_Fire - (중요 함수)
CE : 하랑
2024. 3. 1. 22:43
1. Monster_Base 기본 행동은 같다.
if (false == checkLocation) // 첫 업데이트와, 벽에 충돌시에만 실행
{
// 이동 범위 지정
CurLocation = GetActorLocation() * FVector::Right;
RangeXL = CurLocation + (FVector::Left * RangeX);
RangeXR = CurLocation + (FVector::Right * RangeX);
}
- Monster_Base와 같이 특정범위만 좌우 이동(반복)
else {
//MovePos = FVector::Zero;
IsAtt = false;
if (MonsterDirNormal.iX() == -1 && IsIce == false) // 왼쪽 방향
{
MonsterRenderer->ChangeAnimation("Move_Left");
WallX = -20;
}
else if (MonsterDirNormal.iX() == 1 && IsIce == false) { // 오른쪽 방향
MonsterRenderer->ChangeAnimation("Move_Left");
WallX = 20;
}
}
- 평상시는 특정 범위만 이동
2. pengi_Ice -> 추격 코드 같음
(1) X축 기준 특정 범위 플레이어를 인식하면 추격
FVector MosterXL = MonsterPos + FVector::Left * sight; // 몬스터 왼쪽 플레이어 인식 시야 X축
FVector MosterXR = MonsterPos + FVector::Right * sight; // 몬스터 오른쪽 플레이어 인식 시야 X축
- 플레이어를 인식하면 추격 시작과 동시에 Att 애니메이션 실행
if (MosterXL.iX() < PlayerX.iX() && MosterXR.iX() > PlayerX.iX()) // 몬스터 시야에 포착된 경우 X축 기준 왼쪽, 오른쪽
{
IsAtt = true;
MoveSpeed = 100.0f;
if (MonsterDirNormal.iX() == -1 && IsIce == false) // 왼쪽 방향
{
MonsterRenderer->ChangeAnimation("Att_Left");
WallX = -20;
}
else if (MonsterDirNormal.iX() == 1 && IsIce == false) { // 오른쪽 방향
MonsterRenderer->ChangeAnimation("Att_Right");
WallX = 20;
}
MovePos += MonsterDirNormal * _DeltaTime * MoveSpeed; // 몬스터가 플레이어의 Y축도 인식할 수 있으니 FVector::Right 를 곱해 X축만 추격
}